【问题标题】:HttpClient timeout error calling PostAsJsonAsync调用 PostAsJsonAsync 的 HttpClient 超时错误
【发布时间】:2019-06-21 19:57:05
【问题描述】:

我在从 HttpClient PostAsJsonAsync 方法获取响应时遇到问题。我将 StringContent 数据传递给 POST 请求,但它返回 Forbidden (403) 状态代码。

当我尝试添加默认请求标头(代码注释行)时,错误发生了变化并返回了超时问题:

{System.Net.Http.WinHttpException (0x80072EE2): 操作超时 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在 System.Threading.Tasks.RendezvousAwaitable`1.GetResult() 在 System.Net.Http.WinHttpHandler.d__105.MoveNext()}

var content = new StringContent(JsonConvert.SerializeObject(contentBody), Encoding.UTF8, "application/json");

var client = new HttpClient();
client.BaseAddress = new Uri("https://www.example.com");
//client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

using (var httpResponse = await client.PostAsJsonAsync("api/details", content))
{
    if (httpResponse.Content != null)
    {
        var responseContent = await httpResponse.Content.ReadAsStringAsync();
    }
}

当我在 Postman 中尝试时,它返回了 JSON 数据。为什么它在代码中不起作用?有什么东西阻止了我的连接吗?

【问题讨论】:

    标签: c# httpclient


    【解决方案1】:

    BaseAddress 属性需要以正斜杠作为后缀:

    client.BaseAddress = new Uri("https://www.example.com/");
    

    【讨论】:

    • 我试过了,它仍然返回一个 Forbidden 状态码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多