带有身份验证的 VB.Net HttpClient GET 请求

时间:2021-07-16 01:32:34

标签: .net vb.net http http-headers

我有这段代码,我想将其用作调用的基础,我需要对 REST API GET 请求进行调用以返回 JSON 数据。我可以调用它并且工作正常。现在我想插入我需要的网站。但是,该站点需要我拥有的用户名/密码。我只是不知道在这种情况下如何实现它。我习惯使用WebRequest,但看到有人推荐使用HttpClient。

{{1}}

1 个答案:

答案 0 :(得分:0)

以下是 HttpClientHandler 类文档中的代码示例:

static async Task Main()
{
   // Create an HttpClientHandler object and set to use default credentials
   HttpClientHandler handler = new HttpClientHandler();
   handler.UseDefaultCredentials = true;

   // Create an HttpClient object
   HttpClient client = new HttpClient(handler);

   // Call asynchronous network methods in a try/catch block to handle exceptions
   try
   {
      HttpResponseMessage response = await client.GetAsync("http://www.contoso.com/");

      response.EnsureSuccessStatusCode();

      string responseBody = await response.Content.ReadAsStringAsync();
      Console.WriteLine(responseBody);
   }
   catch(HttpRequestException e)
   {
       Console.WriteLine("\nException Caught!");
       Console.WriteLine("Message :{0} ",e.Message);
   }

   // Need to call dispose on the HttpClient and HttpClientHandler objects
   // when done using them, so the app doesn't leak resources
   handler.Dispose();
   client.Dispose();
}

在这种情况下,它使用系统默认凭据,但您可以根据需要自行创建 NetworkCredential。这意味着,在您的代码中,您可以更改此内容:

Using client As HttpClient = New HttpClient()
    '...
End Using

像这样:

Using handler As New HttpClientHandler With {.Credentials = New NetworkCredential(username, password)},
      client As New HttpClient(handler)
    '...
End Using