通过 HTTP 客户端 POST 一个空的正文
Posted
技术标签:
【中文标题】通过 HTTP 客户端 POST 一个空的正文【英文标题】:POST an empty body via HTTP Client 【发布时间】:2019-12-11 08:37:21 【问题描述】:我正在尝试向Post Request
发送一个空正文,但它没有执行。
我已经试过了:
Post an empty body to REST API via HttpClient
static async Task<string> CancelSale(string mainUrl, string bearerInfo,string systemNumber)
var cancelsaleUrl = mainUrl + $"api/sale/cancel/systemNumber";
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", bearerInfo);
var data = new StringContent(null, Encoding.UTF8, "application/json");
var saleResponse = await client.PostAsync(cancelsaleUrl, data);
var responseBody = await saleResponse.Content.ReadAsStringAsync();
Console.WriteLine(responseBody);
return responseBody;
但它就是不执行,也不例外。
我也试过这个:
var saleResponse = await client.PostAsync(cancelsaleUrl, null);
这也是同样的结果。
有什么想法吗?
【问题讨论】:
那么当你调试它时,它会成功通过每一行但 POST 从未完成? 此时它到达数据并离开方法。如果我使用第二个选项,它会在 saleResponse 之后离开该方法。是的,它不做 POST 【参考方案1】:问题很简单。我在一个变量中得到了整个这个方法的结果,它没有等待这个方法:
var cancelSale = CancelSale(mainUrl, bearerInfo, systemNumber);
一旦它到达任何等待它的东西,它就会停止并离开该方法。
这是工作代码:
var cancelSale = await CancelSale(mainUrl, bearerInfo, systemNumber);
static async Task<string> CancelSale(string mainUrl, string bearerInfo,string systemNumber)
var cancelsaleUrl = mainUrl + $"api/sale/cancel/systemNumber";
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", bearerInfo);
var saleResponse = await client.PostAsync(cancelsaleUrl, null);
var responseBody = await saleResponse.Content.ReadAsStringAsync();
Console.WriteLine(responseBody);
return responseBody;
【讨论】:
以上是关于通过 HTTP 客户端 POST 一个空的正文的主要内容,如果未能解决你的问题,请参考以下文章
Google Cloud Functions 节点 JS - 来自客户端获取的 POST 请求,请求正文未通过 [重复]
来自 React 的 Express POST 请求返回空正文
对服务器的 Http.post 请求不会随它一起发送正文。在服务器端,请求的主体是空的。我在下面添加了代码