c#

位置:IT落伍者 >> c# >> 浏览文章

C# HttpWebRequest提交数据方式浅析


发布日期:2023年09月02日
 
C# HttpWebRequest提交数据方式浅析

C# HttpWebRequest提交数据方式学习之前我们先来看看什么是HttpWebRequest它是 基类库中的一个类在命名空间 SystemNet 下面用来使用户通过HTTP协议和服务器交互

C# HttpWebRequest的作用

HttpWebRequest对HTTP协议进行了完整的封装对HTTP协议中的 Header Content Cookie 都做了属性和方法的支持很容易就能编写出一个模拟浏览器自动登录的程序

C# HttpWebRequest提交数据方式

程序使用HTTP协议和服务器交互主要是进行数据的提交通常数据的提交是通过 GET 和 POST 两种方式来完成下面对这两种方式进行一下说明

C# HttpWebRequest提交数据方式 GET 方式

GET 方式通过在网络地址附加参数来完成数据的提交比如在地址 CN 中前面部分  表示数据提交的网址后面部分 hl=zhCN 表示附加的参数其中 hl 表示一个键(key) zhCN 表示这个键对应的值(value)程序代码如下

HttpWebRequest req = (HttpWebRequest) HttpWebRequestCreate( CN );

reqMethod = GET;

using (WebResponse wr = reqGetResponse())

{

//在这里对接收到的页面内容进行处理

}

C# HttpWebRequest提交数据方式 POST 方式

POST 方式通过在页面内容中填写参数的方法来完成数据的提交参数的格式和 GET 方式一样是类似于 hl=zhCN&newwindow= 这样的结构程序代码如下

string param = hl=zhCN&newwindow=;

byte[] bs = EncodingASCIIGetBytes(param);

HttpWebRequest req = (HttpWebRequest) HttpWebRequestCreate( CN/ );

reqMethod = POST;

reqContentType = application/xwwwformurlencoded;

reqContentLength = bsLength;

using (Stream reqStream = reqGetRequestStream())

{

reqStreamWrite(bs bsLength);

}

using (WebResponse wr = reqGetResponse())

{

//在这里对接收到的页面内容进行处理

}

在上面的代码中我们访问了  的网址分别以 GET 和 POST 方式提交了数据并接收了返回的页面内容然而如果提交的参数中含有中文那么这样的处理是不够的需要对其进行编码让对方网站能够识别

C# HttpWebRequest提交数据方式 使用 GET 方式提交中文数据

GET 方式通过在网络地址中附加参数来完成数据提交对于中文的编码常用的有 gb 和 utf 两种用 gb 方式编码访问的程序代码如下

Encoding myEncoding = EncodingGetEncoding(gb);

string address = + HttpUtilityUrlEncode(参数一 myEncoding) + = + HttpUtilityUrlEncode(值一 myEncoding);

HttpWebRequest req = (HttpWebRequest)HttpWebRequestCreate(address);

reqMethod = GET;

using (WebResponse wr = reqGetResponse())

{

//在这里对接收到的页面内容进行处理

}

在上面的程序代码中我们以 GET 方式访问了网址  传递了参数参数一=值一由于无法告知对方提交数据的编码类型所以编码方式要以对方的网站为标准常见的网站中  (百度)的编码方式是 gb  (谷歌)的编码方式是 utf

C# HttpWebRequest提交数据方式 使用 POST 方式提交中文数据

POST 方式通过在页面内容中填写参数的方法来完成数据的提交由于提交的参数中可以说明使用的编码方式所以理论上能获得更大的兼容性用 gb 方式编码访问的程序代码如下

Encoding myEncoding = EncodingGetEncoding(gb);

string param = HttpUtilityUrlEncode(参数一 myEncoding) + = + HttpUtilityUrlEncode(值一 myEncoding) + & + HttpUtilityUrlEncode(参数二 myEncoding) + = + HttpUtilityUrlEncode(值二 myEncoding);

byte[] postBytes = EncodingASCIIGetBytes(param);

HttpWebRequest req = (HttpWebRequest)

HttpWebRequestCreate( );

reqMethod = POST;

reqContentType = application/xwwwformurlencoded;charset=gb;

reqContentLength = postBytesLength;

using (Stream reqStream = reqGetRequestStream())

{

reqStreamWrite(bs bsLength);

}

using (WebResponse wr = reqGetResponse())

{

//在这里对接收到的页面内容进行处理

}

从上面的代码可以看出 POST 中文数据的时候先使用 UrlEncode 方法将中文字符转换为编码后的 ASCII 码然后提交到服务器提交的时候可以说明编码的方式用来使对方服务器能够正确的解析

以上列出了客户端程序使用HTTP协议与服务器交互的情况常用的是 GET 和 POST 方式现在流行的 WebService 也是通过 HTTP 协议来交互的使用的是 POST 方法与以上稍有所不同的是 WebService 提交的数据内容和接收到的数据内容都是使用了 XML 方式编码所以 HttpWebRequest 也可以使用在调用 WebService 的情况下

C# HttpWebRequest提交数据方式的基本内容就向你介绍到这里希望对你了解和学习C# HttpWebRequest提交数据方式有所帮助

               

上一篇:C#解决猴子吃桃子的问题!

下一篇:c#窗体事件