gpt4 book ai didi

c# - WebClient - 获取有关错误状态代码的响应正文

转载 作者:可可西里 更新时间:2023-11-01 07:54:29 26 4
gpt4 key购买 nike

我基本上是在寻找与此处询问的相同的东西: Any way to access response body using WebClient when the server returns an error?

但目前还没有答案。

服务器返回“400 错误请求”状态,但在响应正文中有详细的错误解释。

关于使用 .NET WebClient 访问该数据有什么想法吗?它只是在服务器返回错误状态代码时抛出异常。

最佳答案

您无法从网络客户端获取它,但是在您的 WebException 上,您可以访问将其转换为 HttpWebResponse 对象的响应对象,并且您将能够访问整个响应对象。

请参阅WebException类定义以获取更多信息。

下面是来自 MSDN 的示例(为了清楚起见,添加了阅读网络响应的内容)

using System;
using System.IO;
using System.Net;

public class Program
{
public static void Main()
{
try {
// Create a web request for an invalid site. Substitute the "invalid site" strong in the Create call with a invalid name.
HttpWebRequest myHttpWebRequest = (HttpWebRequest) WebRequest.Create("invalid URL");

// Get the associated response for the above request.
HttpWebResponse myHttpWebResponse = (HttpWebResponse) myHttpWebRequest.GetResponse();
myHttpWebResponse.Close();
}
catch(WebException e) {
Console.WriteLine("This program is expected to throw WebException on successful run."+
"\n\nException Message :" + e.Message);
if(e.Status == WebExceptionStatus.ProtocolError) {
Console.WriteLine("Status Code : {0}", ((HttpWebResponse)e.Response).StatusCode);
Console.WriteLine("Status Description : {0}", ((HttpWebResponse)e.Response).StatusDescription);
using (StreamReader r = new StreamReader(((HttpWebResponse)e.Response).GetResponseStream()))
{
Console.WriteLine("Content: {0}", r.ReadToEnd());
}
}
}
catch(Exception e) {
Console.WriteLine(e.Message);
}
}
}

关于c# - WebClient - 获取有关错误状态代码的响应正文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15346362/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com