2015-03-26 9 views
3

Хорошо, поэтому я прочитал несколько статей по моей теме, но никто, кажется, не помогает. Я пытаюсь выполнить то же самое, что этот парень хотел в этой статье here. Я использовал пример, указанный в ответе (https: // {yourserver} /defaultcollection/_apis/git/repositories?api-version=1.0) в угловом HTTP-запросе, но я получаю ошибку 401, в которой указаны учетные данные i недействительны.REST API вызов для TFS2013

Затем я загрузил curl и предоставил следующую команду «curl -u username: password http: // {myserver} /defaultcollection/_apis/git/repositories?api-version=1.0», и результат вернулся к тому же, html говорит, что у меня нет действительных учетных данных. Может ли кто-нибудь указать мне в правильном направлении, чтобы я мог вытащить ветки корневой ветви и дочерние ветви и данные вместе с ней?

По сути, я ищу способ извлечь данные с сервера и отобразить их в своем веб-приложении. Мне нужны имена ветвей и история для каждой ветви и дочерней ветви.

Update

Так что я теперь в состоянии Curl в эту услугу, используя --ntlm переключатель, который Ричард рекомендуется. Теперь, чтобы фактически получить мое приложение подключен к услуге я обнаружил, что я мог бы передать окна учетные данные с помощью:

withCredentials:true 

Он больше не дает мне ошибку 401. Вместо этого я не получаю новую ошибку:

XMLHttpRequest cannot load http://{servername}/{defaultcollection}/_apis/projects?api-version=1.0. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8080' is therefore not allowed access. 

Каковы мои следующие шаги, чтобы получить эту работу?

Решение

Я взял то, что Ричард предложил и создал свой собственный asp.net Web API для взаимодействия с TFS. Мне удалось изменить файл web.config, чтобы разрешить CORS. Я добавил следующие строки в раздел system.webServer файла.

<httpProtocol> 
    <customHeaders> 
     <add name="Access-Control-Allow-Origin" value="*" /> 
    </customHeaders> 
</httpProtocol> 

Делать это решало сообщение об ошибке я получал и создание простой API, чтобы получить конкретную информацию, не было слишком трудно сделать. Спасибо за помощь.

ответ

4

В вашей команде curl добавьте --ntlm в качестве опции.

Команда должна выглядеть следующим образом:

curl -u username:password --ntlm http://{myserver}/defaultcollection/_apis/git/repositories?api-version=1.0 

Имейте в виду, что API не поддерживает CORS. Это означает, что вы можете совершать вызовы API со своего кода на стороне сервера без проблем, но вы не можете совершать вызовы непосредственно из браузера. Для этого вы можете проголосовать UserVoice suggestion.

+0

спасибо за это @RichardBanks. Это помогло мне позволить мне заглянуть в то, что я искал. Однако остается вопрос, как я могу это сделать в angularjs? – itsNino91

+0

Я пробовал передавать учетные данные с помощью функции http.get. Это дает мне 200 для доступа к URL-адресу, но теперь я получаю сообщение об ошибке: «Подстановочный знак * * не может использоваться в заголовке« Access-Control-Allow-Origin », когда флаг учетных данных является истинным. Origin 'http:// localhost ', следовательно, не допускается. " – itsNino91

+0

Ах. Да. Прости, я пропустил это. Я обновлю ответ. –

Смежные вопросы