c# 400 WebException GetResponseAsString
时间: 2024-09-20 11:10:36 浏览: 53
在 C# 中,`WebException` 是 `System.Net` 命名空间下的一个异常类,通常用于处理网络请求时遇到的问题,如HTTP状态码非200、网络连接错误等。如果你想要获取引发的 Web 请求响应作为字符串,当你在尝试通过 `HttpWebRequest` 或类似类发送请求并捕获到 `WebException` 时,可以使用 `WebResponse` 对象的 `GetResponseAsStringAsync()` 方法。
这个方法会返回一个 `Task<string>`,你可以使用 await 关键字等待其完成,并从结果中获取到 HTTP 响应的内容(通常是 HTML、JSON 等格式)。下面是一个简单的示例:
```csharp
try
{
using (var request = WebRequest.Create("http://example.com"))
{
request.Method = "GET";
var response = (HttpWebResponse)request.GetResponse();
if (!response.IsSuccessStatusCode)
{
throw new WebException($"Error: {response.StatusCode}", response);
}
using (var reader = new StreamReader(response.GetResponseStream()))
{
string responseBody = await reader.ReadToEndAsync();
Console.WriteLine(responseBody); // 输出响应字符串
}
}
}
catch (WebException ex)
{
// 处理 WebException
Console.WriteLine($"Error: {ex.Message}");
string responseString;
try
{
responseString = ((HttpWebResponse)ex.Response).GetResponseAsString(); // 这里假设存在这样一个方法
}
catch (Exception innerEx)
{
responseString = "Failed to get response as string: " + innerEx.Message;
}
Console.WriteLine(responseString);
}
```
请注意,`WebResponse.GetResponseAsString()` 并不是一个标准的 .NET 方法,上述代码只是为了说明如何获取响应内容,实际 C# 中应该直接读取 `StreamReader` 的内容,如果没有提供这样的方法,你需要自行编写或找到第三方库来实现。
阅读全文