2015-06-29 14 views
8

Tôi đã đấu tranh với xác thực trong TeamCity thông qua API gần đây. Tôi có thể truy cập tài nguyên trực tiếp trong trình duyệt của mình (http://usr:[email protected]:8111/httpAuth/app/rest/...), Nhưng làm như vậy trả về 401-Không được phép theo chương trình.TeamCity - Không thể xác thực qua API

WebRequest request = WebRequest.Create("http://user:[email protected]:8111/httpAuth/app/rest/projects"); 
     request.Method = WebRequestMethods.Http.Get; 
     try 
     { 
      request.Timeout = Timeout.Infinite; 
      WebResponse response = request.GetResponse(); //Returns 401:Unauthorized 

tôi có thể sử dụng guestAuth (http://teamcity:8111/guestAuth/app/rest/projects) mà không cần bất kỳ vấn đề, vì vậy không nên có bất kỳ vấn đề với bản thân WebRequest.

Có ai có ý tưởng không?

+0

Bạn sẽ vào gửi khách hàng chỉ credentials.Then sẽ đáp ứng những thành công –

+0

tôi thấy một ví dụ ở đây mà tôi nghĩ là đủ .. (http://stackoverflow.com/questions/11017686/how-to- pass-username-and-password-in-teamcity-rest-api) – frods

+0

@ ... yêu cầu curl này xem ví dụ này .. đặc biệt cho 'CreateHttpClient' https://github.com/stack72/TeamCitySharp/blob/master /src/TeamCitySharp/Connection/TeamCityCaller.cs –

Trả lời

6

Hãy thử thêm thông tin đăng nhập của bạn và sau đó thực hiện request.it sẽ nhận được những gì bạn cần.

var username = "abc"; 
    var password = "123"; 
    var encoded = System.Convert.ToBase64String(System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes(username + ":" + password)); 
    request.Headers.Add("Authorization", "Basic " + encoded); 
+0

Cảm ơn bạn rất nhiều! Đã tạo yêu cầu dựa trên câu trả lời khác ở đây, nhưng tôi đoán tôi đang sử dụng nó trong ngữ cảnh phía trước .. – frods

Các vấn đề liên quan