[英]Get a list of team projects using REST api in C# for on premise TFS 2015 Update3
我正在尝试使用来自C#的REST api调用并遵循以下MSDN文档来获取所有项目:
https://www.visualstudio.com/zh-CN/docs/integrate/api/tfs/projects
在执行GetTeamProjects()
我得到以下响应:
响应{状态代码:404,原因短语:'未找到',版本:1.1,内容:System.Net.Http.StreamContent,标头:
我假设错误可能是由于身份验证类型引起的。 我在内部使用NTLM时通过了Basic。
我正在尝试获取TFS项目以获取用户权限详细信息。
我只是使用此方法而无需启用基本身份验证:
var client = new WebClient();
client.Credentials = new NetworkCredential("user", "password", "domain");
var response = client.DownloadString("http://tfsserver:8080/tfs/teamprojectCollection/_apis/projects?api-version=2.2");
如果您遇到身份验证问题,则应该收到401错误,而不是404错误。我担心您的代码有问题。 您可以在下面参考我的代码:
using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading.Tasks;
namespace GetTeamProjectREST
{
class Program
{
public static void Main()
{
Task t = GetTeamProjectREST();
Task.WaitAll(new Task[] { t});
}
private static async Task GetTeamProjectREST()
{
try
{
var username = "domain\\username";
var password = "password";
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Accept.Add(
new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic",
Convert.ToBase64String(
System.Text.ASCIIEncoding.ASCII.GetBytes(
string.Format("{0}:{1}", username, password))));
using (HttpResponseMessage response = client.GetAsync(
"http://tfsserver:8080/tfs/teamprojectCollection/_apis/projects?api-version=2.2").Result)
{
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
Console.WriteLine(responseBody);
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.