使用HttpWebRequest发送自定义POST请求
来源:互联网 发布:网络恐吓罪 编辑:程序博客网 时间:2024/05/16 01:31
原文链接:http://www.cnblogs.com/tangge/p/4998007.html
平时用浏览器看网页的时候,点击一下submit按钮的时候其实就是给服务器发送了一个POST请求。但是如何在自己的C#程序里面实现类似的功能呢?本文给出了一个简单的范例,可以实现类似的和web server之间的POST通讯。通过程序发送POST的过程如下所示:
1. 创建httpWebRequest对象
HttpWebRequest不能直接通过new来创建,只能通过WebRequest.Create(url)的方式来获得。
WebRequest是获得一些列应用层协议对象的一个统一的入口(工厂模式),它根据参数的协议来确定最终创建的对象类型。所以我们的程序里面有一个对返回对象的类型进行测试的过程。
2. 初始化HttpWebRequest对象
这个过程提供一些http请求常用的属性:agentstring,contenttype等其中agentstring比较有意思,它是用来识别你用的浏览器名字的,通过设置这个属性你可以欺骗服务器你是一个IE,firefox甚至是mac里面的safari。很多认真设计的网站都会根据这个值来返回对用户浏览器特别优化过的代码。
3. 附加要POST给服务器的数据到HttpWebRequest对象
附加POST数据的过程比较特殊,它并没有提供一个属性给用户存取,需要写入HttpWebRequest对象提供的一个stream里面。
4. 读取服务器的返回信息
读取服务器返回的时候,要注意返回数据的encoding。如果我们提供的解码类型不对会造成乱码。比较常见的是utf-8和gb2312之间的混淆,据我测试,国内的主机一般都是gb2312编码的。一般设计良好的网站会把它编码的方式放在返回的http header里面,但是也有不少网站根本没有,我们只能通过一个对返回二进制值的统计方法来确定它的编码方式。
/// <summary> /// /// </summary> /// <param name="url">地址</param> /// <param name="method">方法</param> /// <param name="param">json参数</param> /// <returns></returns> public static string WebServiceApp(string url, string method, string param) { //转换输入参数的编码类型,获取bytep[]数组 byte[] byteArray = Encoding.UTF8.GetBytes("json=" + param); //初始化新的webRequst //1. 创建httpWebRequest对象 HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(new Uri(url + "/" + method)); //2. 初始化HttpWebRequest对象 webRequest.Method = "POST"; webRequest.ContentType = "application/x-www-form-urlencoded"; webRequest.ContentLength = byteArray.Length; //3. 附加要POST给服务器的数据到HttpWebRequest对象(附加POST数据的过程比较特殊,它并没有提供一个属性给用户存取,需要写入HttpWebRequest对象提供的一个stream里面。) Stream newStream = webRequest.GetRequestStream();//创建一个Stream,赋值是写入HttpWebRequest对象提供的一个stream里面 newStream.Write(byteArray, 0, byteArray.Length); newStream.Close(); //4. 读取服务器的返回信息 HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse(); StreamReader php = new StreamReader(response.GetResponseStream(), Encoding.UTF8); string phpend = php.ReadToEnd(); return phpend; }
- 使用HttpWebRequest发送自定义POST请求
- 使用HttpWebRequest发送自定义POST请求
- 使用HttpWebRequest发送自定义POST请求
- 使用HttpWebRequest发送自定义POST请求
- 使用HttpWebRequest发送自定义POST请求(以http方式推送消息)
- HttpWebRequest发送模拟POST请求
- 使用HttpWebRequest发送HTTP请求,同时支持GET/POST方式提交。
- c# 使用HttpWebRequest发送http请求
- 通过HttpWebRequest 发送 POST 请求实现自动登陆
- 通过HttpWebRequest 发送 POST 请求实现自动登陆
- 通过HttpWebRequest 发送 POST 请求实现自动登陆
- 通过HttpWebRequest 发送 POST 请求实现自动登陆
- 通过HttpWebRequest 发送 POST 请求实现自动登陆
- 通过HttpWebRequest 发送 POST 请求实现自动登陆
- 通过HttpWebRequest 发送 POST 请求实现自动登陆
- 通过HttpWebRequest分别向服务器发送GET或POST请求
- HttpWebRequest发送Post数据
- HttpWebRequest发送数据 post
- 没备份数据库,只有原始的文件夹,如何恢复数据
- 自定义View-仿即刻点赞效果
- 网络编程中重要函数总结:如何判断socket关闭
- Word组件Spire.Doc for .NET V6.0.31发布 | 支持免费下载
- XP系统谷歌浏览器一直提示“adobe flash player 因过期而遭阻止”解决方法
- 使用HttpWebRequest发送自定义POST请求
- c++ auto for循环
- git自动补全
- idea中使用git提交代码报错:commit your changes or stash them before you can merge.
- EXCEL文件读写 适用WINDOWS和LINUX
- 欢迎使用CSDN-markdown编辑器
- Educational Codeforces Round 30-归并排序计数&构造- Merge Sort
- js 剪切板应用clipboardData详细解析
- WindowInsets与fitSystemWindow相关知识总结