【问题标题】:HttpClient PostAsync with header and content c# [duplicate]带有标题和内容c#的HttpClient PostAsync [重复]
【发布时间】:2019-03-08 00:19:41
【问题描述】:

我通过传递 requestUri 和内容来使用 HttpClient PostAsync 方法,但得到一个非常通用的错误消息:

发生了一个或多个错误

你能指导我吗?不确定是什么原因造成的。当我在邮递员中使用相同的 requestUri 和内容时,它按预期工作。

var client = new HttpClient();
var content = new StringContent(authXML);
content.Headers.ContentType = new MediaTypeHeaderValue("application/xml");
client.BaseAddress = new Uri(authorizationUri);
var result = client.PostAsync(authorizationUri, content).Result; //Generic error message "One or more errors occurred"
if (response.IsSuccessStatusCode)
{
    // SUCCESS
    // Do Something
}
else
{
    // ERROR
    // Do Something
}

【问题讨论】:

  • 你至少能得到响应的HTTP状态码吗?
  • 最终,您会想要使用await,但与此同时,请使用.GetAwaiter().GetResult() 而不是.Result 来查看展开的异常。我现在只是猜测,但我想知道您的 baseUriauthorizationUri 是否都是绝对的,这可能会导致异常。
  • One or more errors occurred 你需要学会阅读和解释整个异常。它会告诉你很多关于错误的信息!
  • 感谢大家的回复。我有详细的例外。基本上我遇到了“System.Net.WebException:请求被中止:无法创建 SSL/TLS 安全通道。”

标签: c# .net xml


【解决方案1】:

您需要等待或等待结果。

编辑: 发生的一个或多个错误是任务的聚合异常。你可能想要内在的

var client = new HttpClient();
var content = new StringContent(authXML);
content.Headers.ContentType = new MediaTypeHeaderValue("application/xml");
client.BaseAddress = new Uri(authorizationUri);
var post = client.PostAsync(authorizationUri, content);
try {
      post.Wait();
  }
  catch (AggregateException e) {
     foreach (Exception ie in e.InnerExceptions)
        Console.WriteLine("{0}: {1}", ie.GetType().Name,
                          ie.Message);
  }

if (post.Result.IsSuccessStatusCode)
{
    // SUCCESS
    // Do Something
}
else
{
    // ERROR
    // Do Something
}

【讨论】:

  • 你确定这绝对能解决问题吗?
  • 是的。它解决了错误“发生了一个或多个错误”。这就是问题所在。他验证了它在邮递员中有效。其余的语法看起来不错。除了 if 语句引用了一个不存在的变量。
【解决方案2】:

提供的代码示例似乎没有获得响应句柄。我认为您需要获取响应,然后将其应用于结果,如下所示:

string result;
var response = client.PostAsync(authorizationUri, content).Result;
response.EnsureSuccessStatusCode();
result = response.Content.ReadAsStringAsync().Result;

【讨论】:

    猜你喜欢
    • 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
    相关资源
    最近更新 更多