使用HttpClient和C#在发布请求上发送json

时间:2019-05-27 16:50:49

标签: c# api asp.net-web-api request httpclient

我对此代码有疑问,我的目标是通过API发送修改,因此我在request上做了HttpClient

using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Text;

public class patchticket
{
   public string patch(string ticketid)
   {

       using (var httpClient = new HttpClient())
       {
           using (var request = new HttpRequestMessage(new HttpMethod("PATCH"), "https://desk.zoho.com/api/v1/tickets/"+ticketid))
           {
               request.Headers.TryAddWithoutValidation("Authorization", "6af7d2d213a3ba5e9bc64b80e02b000");
               request.Headers.TryAddWithoutValidation("OrgId", "671437200");

               request.Content = new StringContent("{\"priority\" : \"High\"}", Encoding.UTF8, "application/x-www-form-urlencoded");


               var response =  httpClient.SendAsync(request);
           return response

           }
       }

   }
}

结果是我没有任何错误,但是更改没有生效。

凭据还可以,我已经用相同参数的curl测试了它,并且效果很好。

1 个答案:

答案 0 :(得分:0)

您似乎想在请求中发布json。尝试定义正确的内容类型为application/json。例如:

request.Content = new StringContent("{\"priority\" : \"High\"}", Encoding.UTF8, "application/json");

由于您的方法返回了string,因此它可以是非异步方法。方法SendAsync是异步的,您必须等待请求完成。您可以在请求后尝试致电Result。例如:

var response =  httpClient.SendAsync(request).Result;
return response.Content; // string content

您将获得HttpResponseMessage的对象。关于它的响应,有很多有用的信息。