C#中的HttpWebRequest类介绍
简介
HttpWebRequest
是一个在 C#
中用来创建 HTTP
请求的类。它允许我们通过 HTTP
协议与远程服务器通信,并获取/发送数据。
使用
创建请求对象
要使用 HttpWebRequest
,我们首先需要创建请求对象。可以通过以下方式进行:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.example.com");
这将创建一个新的 HttpWebRequest
对象,并将其设置为发送到指定 URL
。
添加请求配置
在创建请求对象之后,可以使用以下属性进行配置:
Method
: 可以是GET
,POST
,PUT
,DELETE
,HEAD
等HTTP方法。UserAgent
: 包含用户代理标头值,通常指浏览器名称和版本号。ContentType
: 指示请求正文的内容类型(例如application/json
)。ContentLength
: 指示请求正文的长度(如果请求正文存在)。Headers
: 一个WebHeaderCollection
类型的对象,包含HTTP请求头信息。
以下是一些示例代码,展示如何对请求对象进行修改:
request.Method = "GET";
request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0";
request.ContentType = "application/json";
request.ContentLength = data.Length;
发送请求并获取响应
在完成请求对象配置之后,我们可以通过以下方式发送请求并获取响应:
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
这将发送请求并返回一个 HttpWebResponse
对象,其中包含响应的正文、响应头和其他有用的信息。可以使用以下属性来访问这些信息:
StatusCode
:HTTP
状态代码,例如404
NOT FOUND。StatusDescription
: 包含状态代码的说明,例如Not Found
或OK
。Headers
: 响应标头信息。ResponseUri
: 返回可重定向的请求的实际 URI。ContentType
: 响应正文的内容类型(例如,application/json
)。ContentLength
: 响应正文的长度(如果请求正文存在)。
以下是一个示例代码,展示如何访问响应对象的一些属性和方法:
Console.WriteLine("Status Code : {0}", (int)response.StatusCode);
Console.WriteLine("Status Description : {0}", response.StatusDescription);
foreach (string header in response.Headers)
{
Console.WriteLine("{0}: {1}", header, response.Headers[header]);
}
Stream stream = response.GetResponseStream();
StreamReader reader = new StreamReader(stream);
Console.WriteLine(reader.ReadToEnd());
这将显示响应的状态代码,状态说明,标头和正文。
示例
发送 GET
请求
以下示例代码演示如何使用 HttpWebRequest
发送 GET
请求和获取响应:
// 创建HTTP请求
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.example.com");
request.Method = "GET";
request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0";
// 发送HTTP请求并获取响应消息
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
// 访问响应对象的一些属性和方法
Console.WriteLine("Status Code : {0}", (int)response.StatusCode);
Console.WriteLine("Status Description : {0}", response.StatusDescription);
foreach (string header in response.Headers)
{
Console.WriteLine("{0}: {1}", header, response.Headers[header]);
}
Stream stream = response.GetResponseStream();
StreamReader reader = new StreamReader(stream);
Console.WriteLine(reader.ReadToEnd());
发送 POST
请求
以下示例代码展示了如何使用 HttpWebRequest
发送 POST
请求并获取响应:
// 创建HTTP请求
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.example.com/post-handler");
request.Method = "POST";
request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0";
request.ContentType = "application/x-www-form-urlencoded";
// 添加POST请求的消息体
string postData = "username=myusername&password=mypassword";
byte[] data = Encoding.UTF8.GetBytes(postData);
request.ContentLength = data.Length;
Stream requestStream = request.GetRequestStream();
requestStream.Write(data, 0, data.Length);
requestStream.Close();
// 发送HTTP请求并获取响应消息
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
// 访问响应对象的一些属性和方法
Console.WriteLine("Status Code : {0}", (int)response.StatusCode);
Console.WriteLine("Status Description : {0}", response.StatusDescription);
foreach (string header in response.Headers)
{
Console.WriteLine("{0}: {1}", header, response.Headers[header]);
}
Stream stream = response.GetResponseStream();
StreamReader reader = new StreamReader(stream);
Console.WriteLine(reader.ReadToEnd());
以上代码将发送一个 POST
请求,其中包含一个名为 username
的字段和一个名为 password
的字段。服务器将响应并返回响应正文。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#中的HttpWebRequest类介绍 - Python技术站