C# 通过HTTPS调用REST API时出现500服务器错误
我使用这段代码将XML发布到REST Web服务,但只是得到一个模糊的“500服务器错误”。如果我将同一个XML粘贴到Fiddler中,它就可以完美地工作,那么我做错了什么C# 通过HTTPS调用REST API时出现500服务器错误,c#,xml,rest,fiddler,dotnet-httpclient,C#,Xml,Rest,Fiddler,Dotnet Httpclient,我使用这段代码将XML发布到REST Web服务,但只是得到一个模糊的“500服务器错误”。如果我将同一个XML粘贴到Fiddler中,它就可以完美地工作,那么我做错了什么 using (var client = new HttpClient()) { var httpContent = new StringContent(doc.ToString(), Encoding.UTF8, "text/xml"); var response = client.PostAsync(new U
using (var client = new HttpClient())
{
var httpContent = new StringContent(doc.ToString(), Encoding.UTF8, "text/xml");
var response = client.PostAsync(new Uri("httpsapiurl"),httpContent).Result;
if (response.IsSuccessStatusCode)
{
// EDITED: this isn't hit as IsSuccessStatusCode is always false
//Stream stream = await response.Content.ReadAsStreamAsync();
}
}
您是否需要设置请求的内容类型
try
{
var httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("text/xml"));
HttpRequestMessage req = new HttpRequestMessage(HttpMethod.Post, URL);
req.Content = new StringContent(doc.ToString(), Encoding.UTF8, "text/xml");
await httpClient.SendAsync(req).ContinueWith(async respTask =>
{
Debug.WriteLine(req.Content.ReadAsStringAsync());
};
}
catch (Exception ex)
{
}
尤其是这条线很重要。我遇到过类似的问题,一个API在没有正确设置内容类型头的情况下拒绝回吐任何内容
req.Content = new StringContent(doc.ToString(), Encoding.UTF8, "text/xml");
不知道它是否有帮助。所以这看起来像是一个范围问题,意味着当您试图访问流或r变量时,它超出了if语句的范围。。您调试过这个..@MethodMan吗?抱歉,该代码有误导性,因为条件从不==true