C#中HttpWebRequest的GET与POST方法详解及中文编码应用

11 下载量 110 浏览量 更新于2024-08-30 收藏 61KB PDF 举报
在C#编程中,HttpWebRequest是一个核心类,用于与HTTP服务器进行通信。它支持GET和POST两种常见的HTTP方法,用于数据的获取和提交。本文将详细介绍这两种方法的用法。 1. GET方式: GET方式通常用于从服务器获取数据,而不是提交大量数据。在URL中,参数是通过查询字符串附加的,如"http://www.jb51.net/?hl=zh-CN"。这里的"hl=zh-CN"就是参数,hl是键(key),zh-CN是对应的值(value)。在C#中,创建HttpWebRequest时,可以通过UrlEncode函数对中文字符进行编码,例如: ```csharp Encoding myEncoding = Encoding.GetEncoding("gb2312"); string address = "http://www.jb51.net/?" + HttpUtility.UrlEncode("参数一", myEncoding) + "=" + HttpUtility.UrlEncode("值一", myEncoding); HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(address); req.Method = "GET"; using (WebResponse wr = req.GetResponse()) { // 处理接收到的页面内容 } ``` 在实际操作中,需要根据目标服务器的编码设置,选择合适的编码格式。 2. POST方式: POST方式用于向服务器提交数据,特别是当数据量较大或者希望隐藏参数时更为适用。在POST请求中,数据包含在请求体中,而不是URL查询字符串。C#中,可以使用Stream或FormUrlEncodedContent来发送POST数据: ```csharp string postData = "参数一=" + HttpUtility.UrlEncode("值一", Encoding.UTF8) + "&参数二=" + ...; byte[] byteArray = Encoding.UTF8.GetBytes(postData); using (var request = (HttpWebRequest)WebRequest.Create("http://www.jb51.net/submit")) { request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; request.ContentLength = byteArray.Length; using (var stream = request.GetRequestStream()) { stream.Write(byteArray, 0, byteArray.Length); } using (WebResponse response = request.GetResponse()) { // 处理响应 } } ``` 在POST操作中,需要注意设置Content-Type为"application/x-www-form-urlencoded",并且可能还需要处理Cookie和Header信息,如设置User-Agent、Authorization等,以便与服务器建立正确的连接。另外,对于敏感信息(如用户密码),应进行适当的加密处理。 总结来说,C#中的HttpWebRequest提供了丰富的功能,无论是GET还是POST,都需理解其基本原理并根据具体需求进行编码和数据处理。同时,了解并正确使用各种相关的编码格式,如GB2312、UTF8等,能确保与服务器之间的有效通信。