178

我试图调用的 API 要求我进行 POST 但主体为空。我是使用 WCF Web API HttpClient 的新手,我似乎无法找到可以使用空正文发布帖子的编写代码。我找到了对一些 HttpContent.CreateEmpty() 方法的引用,但我认为这不适用于 Web API HttpClient 代码,因为我似乎找不到该方法。

4

5 回答 5

212

使用StringContentor ObjectContentwhich derived from HttpContentor 你可以使用nullas HttpContent

var response = await client.PostAsync(requestUri, null);
于 2011-10-26T20:06:41.583 回答
124

以前做过,只是保持简单:

Task<HttpResponseMessage> task = client.PostAsync(url, null);
于 2017-05-12T11:34:01.937 回答
7

已经发现:

Task<HttpResponseMessage> task = client.PostAsync(url, null);

将 null 添加到请求正文,这在 WSO2 上失败。替换为:

Task<HttpResponseMessage> task = client.PostAsync(url, new {});

并且工作了。

于 2017-09-07T22:53:45.780 回答
2

要解决此问题,请使用以下示例:

   using (var client = new HttpClient())
            {
                var stringContent = new StringContent(string.Empty);
                stringContent.Headers.ContentType = MediaTypeHeaderValue.Parse("application/x-www-form-urlencoded");
                var response = client.PostAsync(url, stringContent).Result;
                var result = response.Content.ReadAsAsync<model>().Result;
            }
于 2020-04-19T07:28:42.823 回答
-6

如果您的网络方法没有参数或者它们都适合 URL 模板,我认为它会自动执行此操作。

例如,此声明发送空正文:

  [OperationContract]
  [WebGet(UriTemplate = "mykewlservice/{emailAddress}",
     RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json,
     BodyStyle = WebMessageBodyStyle.Wrapped)]
  void GetStatus(string emailAddress, out long statusMask);
于 2011-10-26T19:23:13.250 回答