【问题标题】:POST an empty body via HTTP Client通过 HTTP 客户端 POST 一个空的正文
【发布时间】: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

标签: c# .net post httpclient


【解决方案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;
        }

【讨论】:

    猜你喜欢
    • 2011-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-03
    • 2018-06-15
    • 1970-01-01
    相关资源
    最近更新 更多