2016-12-23 53 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如果您认为此答案是正确的解决方案,请将其标记为已回答。 :) –