2016-12-23 31 views
1

我正在創建調用第三方Rest API的ASP.NET。第三方API只能訪問用戶名和密碼。還使用HTTP基本驗證來自Asp.Net的其餘API調用C#

public string Get(string LabName) 
    { 
    string userName = ConfigurationManager.AppSettings["username"]; 
    string password = ConfigurationManager.AppSettings["password"]; 
    string BaseURL = ConfigurationManager.AppSettings["BaseURL"]; 

    using (var client = new HttpClient()) 
    { 

     Uri uri = new Uri(BaseURL); 
     client.BaseAddress = uri; 
     client.DefaultRequestHeaders.Accept.Clear(); 
     client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/xml")); 
     string clarity_URL = BaseURL+"api/v2/labs?name="+LabName; 
     var response = client.GetAsync(clarity_URL).Result; 

     string responseString = response.Content.ReadAsStringAsync().Result; 
     return responseString; 

我應該使用HttpClientHttpWebRequest。我不知道如何通過用戶名和密碼,同時呼籲在ASP.NET.Can人的REST API建議我如何安全地調用該API

回答

2
var byteArray = Encoding.ASCII.GetBytes("username:password1234"); 

client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray)); 
+0

由於我有字符串username試圖給出'變種的ByteArray = Encoding.ASCII.GetBytes(用戶名:密碼);'它引發錯誤等錯誤'1 \t \t最好重載 'GetBytes會' 不有一個名爲'userName'的參數\t ' – user4912134

+0

您應該像'Encoding.ASCII.GetBytes(username +「:」+ password);' –

+0

@ user4912134如果您認爲此答案是正確的解決方案,請將其標記爲已回答。 :) –