【问题标题】:how to make an OPTIONS request with HttpClient如何使用 HttpClient 发出 OPTIONS 请求
【发布时间】:2019-04-19 20:04:41
【问题描述】:

如何使用 System.Net.Http.HttpClient 发送 OPTIONS 请求

HttpClient 的公开方法

  • 删除异步
  • GetAsync
  • 后异步
  • PutAsync
  • 其他人也很少.....

我期待一个 OptionsAsync

   switch (httpMethod) {
      case HTTP_METHODS.DELETE:
       {
        httpResponseMessage = httpClient.DeleteAsync(uri).Result;
        break;
       }
      case HTTP_METHODS.GET:
       {
        httpResponseMessage = httpClient.GetAsync(uri).Result;
        break;
       }
      case HTTP_METHODS.POST:
       {
        httpResponseMessage = httpClient.PostAsync(uri, httpContent).Result;
        break;
       }
      case HTTP_METHODS.PUT:
       {
        httpResponseMessage = httpClient.PutAsync(uri, httpContent).Result;
        break;
       }
      case HTTP_METHODS.OPTION:
       {
        //not sure what method to call on httpclient here to make Options request
        httpResponseMessage = httpClient.PutAsync(uri, httpContent).Result;
        if (httpResponseMessage.Headers.Contains("X-CSRF-TOKEN")) {
         IEnumerable < string > headerValues = httpResponseMessage.Headers.GetValues("X-CSRF-TOKEN");
         csrfToken = headerValues.FirstOrDefault();
        }
        break;
       } 
     }

【问题讨论】:

标签: c# http dotnet-httpclient


【解决方案1】:

这种方法没有包装器(例如OPTIONSHEAD),但您可以像这些包装器一样使用SendAsync

var request = new HttpRequestMessage(HttpMethod.Options, "url");
var result = await _httpClient.SendAsync(request);

【讨论】:

    【解决方案2】:

    为了获得预期的响应,您必须确保在请求中设置“Origin”标头,如下所示:

    using var client = new HttpClient();
    var message = new HttpRequestMessage(HttpMethod.Options, "url");
    message.Headers.Add("Origin", "http://example.com");
    var response = await client.SendAsync(message);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-09
      • 2023-03-04
      相关资源
      最近更新 更多