[C#] HttpClient를 통해 REST API에 빈 본문 게시

호출하려는 API는 POST를 수행해야하지만 본문이 비어 있어야합니다. 나는 WCF 웹 API HttpClient를 처음 사용하는데 빈 본문으로 게시물을 작성하는 코드를 찾을 수없는 것 같습니다. 일부 HttpContent.CreateEmpty () 메서드에 대한 참조를 찾았지만 해당 메서드를 찾을 수 없기 때문에 웹 API HttpClient 코드에 대한 것 같지 않습니다.



답변

사용 StringContent또는 ObjectContent파생 HttpContent되거나 다음 null과 같이 사용할 수 있습니다 HttpContent.

var response = await client.PostAsync(requestUri, null);


답변

이전에이 작업을 수행 했으므로 간단하게 유지하십시오.

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


답변

다음을 발견했습니다.

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

WSO2에서 실패한 요청 본문에 null을 추가합니다. 다음으로 대체 :

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

그리고 일했습니다.


답변

이 문제를 해결하려면 다음 예제를 사용하십시오.

   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;
            }


답변

웹 메서드에 매개 변수가 없거나 모두 URL 템플릿에 맞는 경우 자동으로 수행한다고 생각합니다.

예를 들어 다음 선언은 빈 본문을 보냅니다.

  [OperationContract]
  [WebGet(UriTemplate = "mykewlservice/{emailAddress}",
     RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json,
     BodyStyle = WebMessageBodyStyle.Wrapped)]
  void GetStatus(string emailAddress, out long statusMask);


답변