通过 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 一个空的正文的主要内容,如果未能解决你的问题,请参考以下文章

使用 HTTP Post 从客户端流式传输数据

Google Cloud Functions 节点 JS - 来自客户端获取的 POST 请求,请求正文未通过 [重复]

来自 React 的 Express POST 请求返回空正文

对服务器的 Http.post 请求不会随它一起发送正文。在服务器端,请求的主体是空的。我在下面添加了代码

从本机 Java Rest 客户端发送 Http Post [重复]

Node.js POST API 和请求正文的解析