使用 HttpClient 和 C# 在 post 请求中发送 json
Posted
技术标签:
【中文标题】使用 HttpClient 和 C# 在 post 请求中发送 json【英文标题】:Send a json on a post request with HttpClient and C# 【发布时间】:2019-05-27 16:50:49 【问题描述】:我的代码有问题,我的目标是通过 API 发送修改,所以我在 HttpClient
上执行 request
。
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 用相同的参数对其进行了测试,效果很好。
【问题讨论】:
你不是说“PATCH”而不是“PATH”吗?此外,您现在需要更改您在此处公开的 API 凭据。 是的,这是补丁,那些凭据是假的;) 【参考方案1】:您似乎想在请求中发布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的对象。上面有很多关于响应的有用信息。
【讨论】:
好吧,我明天试试,谢谢,你只是认为这是问题所在吗?在我使用var response = await httpClient.SendAsync(request);
之前,我的 await 有一个错误,它说我不能使用它,你知道为什么吗?
好吧,我明天试试 :)以上是关于使用 HttpClient 和 C# 在 post 请求中发送 json的主要内容,如果未能解决你的问题,请参考以下文章
C#用HttpClient类post get,怎么设置cookies