C# 从WebRequest获取标题
从技术上讲,我是在问一个写VB的朋友一个问题,但我以C#的身份发帖,因为越来越多的人使用它。我个人也不知道 我正在帮助他作为一项服务连接到一个移动后端,尽管他设置的方式是代表某人用ASP.net加载自己的网页(我想) 我正在使用Python连接到服务。但他得到了422服务器的响应。我想比较一下他和我的请求头和内容的差异 根据Chris Doggett在下面的文章,在请求实际发送之前,您无法获取标题。但是,只要调用C# 从WebRequest获取标题,c#,webrequest,C#,Webrequest,从技术上讲,我是在问一个写VB的朋友一个问题,但我以C#的身份发帖,因为越来越多的人使用它。我个人也不知道 我正在帮助他作为一项服务连接到一个移动后端,尽管他设置的方式是代表某人用ASP.net加载自己的网页(我想) 我正在使用Python连接到服务。但他得到了422服务器的响应。我想比较一下他和我的请求头和内容的差异 根据Chris Doggett在下面的文章,在请求实际发送之前,您无法获取标题。但是,只要调用request.GetResponse(),Visual Studio(或Expre
request.GetResponse()
,Visual Studio(或Express,不确定)似乎就在断点处停止,并说浏览器上有422错误和一些错误消息。因此,他无法进入下一行,他希望打印标题
两个问题:
Create
方法将返回http/https url的HttpWebRequest
。表示您正以某种方式向服务器发送不正确的格式数据GetResponse()
将抛出一个错误,因为您没有收到
状态代码200
要获取响应的实际标头,需要处理异常
private static void Main(string[] args)
{
WebRequest request = WebRequest.Create("http://google.com/12345"); //generate 404
try
{
WebResponse response = request.GetResponse();
}
catch(WebException ex)
{
HttpWebResponse errorResponse = ex.Response as HttpWebResponse;
if (errorResponse == null)
throw; //errorResponse not of type HttpWebResponse
string responseContent = "";
using(StreamReader r = new StreamReader(errorResponse.GetResponseStream()))
{
responseContent = r.ReadToEnd();
}
Console.WriteLine("The server at {0} returned {1}", errorResponse.ResponseUri, errorResponse.StatusCode);
Console.WriteLine("With headers:");
foreach(string key in errorResponse.Headers.AllKeys)
{
Console.WriteLine("\t{0}:{1}", key, errorResponse.Headers[key]);
}
Console.WriteLine(responseContent);
}
Console.ReadLine();
}
Create
方法将返回http/https url的HttpWebRequest
。表示您正以某种方式向服务器发送不正确的格式数据GetResponse()
将抛出一个错误,因为您没有收到
状态代码200
要获取响应的实际标头,需要处理异常
private static void Main(string[] args)
{
WebRequest request = WebRequest.Create("http://google.com/12345"); //generate 404
try
{
WebResponse response = request.GetResponse();
}
catch(WebException ex)
{
HttpWebResponse errorResponse = ex.Response as HttpWebResponse;
if (errorResponse == null)
throw; //errorResponse not of type HttpWebResponse
string responseContent = "";
using(StreamReader r = new StreamReader(errorResponse.GetResponseStream()))
{
responseContent = r.ReadToEnd();
}
Console.WriteLine("The server at {0} returned {1}", errorResponse.ResponseUri, errorResponse.StatusCode);
Console.WriteLine("With headers:");
foreach(string key in errorResponse.Headers.AllKeys)
{
Console.WriteLine("\t{0}:{1}", key, errorResponse.Headers[key]);
}
Console.WriteLine(responseContent);
}
Console.ReadLine();
}
实际上,我想知道请求头(以便比较发送的内容)而不是响应头,但知道如何捕获异常是一个好的开始。这些头应该通过
请求
对象(实际上是HttpWebRequest
)提供。有一个获取头的示例。GetRequestStream和GetResponse可以抛出异常实际上我想知道请求头(以便比较发送的内容)而不是响应头,但是知道如何捕获异常是一个很好的开始。这些头应该可以通过请求
对象获得(这实际上是一个HttpWebRequest
)。下面是一个获取头的示例。GetRequestStream和GetResponse可以引发异常