2017-04-20 139 views
0

我正在尝试从API中获取REST数据,但我需要使用某些服务器端解决方案来处理对API的调用。我曾尝试使用以下代码如何使用ASP.NET MVC从服务器端调用API?

try 
{ 
    HttpClient client = new HttpClient(); 
    client.Timeout = TimeSpan.FromSeconds(60); 

    var request = new HttpRequestMessage() 
    { 
     RequestUri = new Uri(string.Format("https://jsonodds.com/{0}{1}{2}", "api/odds/", "?source=", "3")), 
     Method = HttpMethod.Get, 
    }; 

    request.Headers.Add("JsonOdds-API-Key", "your key"); 

    HttpResponseMessage response = client.SendAsync(request).Result; 

    if (response.IsSuccessStatusCode) 
    { 
     String.Format("Success"); 
    } 
} 
catch (Exception ex) 
{ //log error } 

我收到407()错误。任何想法或提示如何做到这一点?

+5

'407' =“HTTP错误407需要代理验证”<=似乎您的凭证没有按顺序。 – Igor

回答

1

如果您正在浏览代理服务器,那么您需要为HttpClient使用不同的构造函数。

 _httpClient = new HttpClient(new HttpClientHandler 
      { 
       UseProxy = true, 
       Proxy = new WebProxy 
       { 
        Address = new Uri(proxyUrl), 
        BypassProxyOnLocal = false, 
        UseDefaultCredentials = true 
       } 
      }) 
      { 
       BaseAddress = url 
      }; 

将proxyUrl替换为您的代理地址,然后将该凭证替换为对您的代理有效的凭证。此示例使用默认凭据,但可以将NetworkCredential传递给WebProxy。