使用 HttpWebRequest 向网站提交数据

news/2024/4/29 11:05:23/文章来源:https://blog.csdn.net/wangfishes/article/details/83323477
使用 HttpWebRequest 向网站提交数据
HttpWebRequest 是 .net 基类库中的一个类,在命名空间 System.Net 下面,用来使用户通过 HTTP 协议和服务器交互。

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

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

1. GET 方式。 GET 方式通过在网络地址附加参数来完成数据的提交,比如在地址 http://www.google.com/webhp?hl=zh- CN 中,前面部分 http://www.google.com/webhp 表示数据提交的网址,后面部分 hl=zh-CN 表示附加的参数,其中 hl 表示一个键(key), zh-CN 表示这个键对应的值(value)。程序代码如下:

HttpWebRequest req = (HttpWebRequest) HttpWebRequest.Create( "http://www.google.com/webhp?hl=zh-CN" );
req.Method = "GET";
using (WebResponse wr = req.GetResponse())
{
//在这里对接收到的页面内容进行处理
}

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

string param = "hl=zh-CN&newwindow=1";
byte[] bs = Encoding.ASCII.GetBytes(param);

HttpWebRequest req = (HttpWebRequest) HttpWebRequest.Create( "http://www.google.com/intl/zh-CN/" );
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
req.ContentLength = bs.Length;

using (Stream reqStream = req.GetRequestStream())
{
reqStream.Write(bs, 0, bs.Length);
}
using (WebResponse wr = req.GetResponse())
{
//在这里对接收到的页面内容进行处理
}

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

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

Encoding myEncoding = Encoding.GetEncoding("gb2312");
string address = "http://www.baidu.com /s?" + HttpUtility.UrlEncode("参数一", myEncoding) + "=" + HttpUtility.UrlEncode("值一", myEncoding);
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(address);
req.Method = "GET";
using (WebResponse wr = req.GetResponse())
{
//在这里对接收到的页面内容进行处理
}

在上面的程序代码中,我们以 GET 方式访问了网址 http://www.baidu.com/s ,传递了参数“参数一=值一”,由于无法告知对方提交数据的编码类型,所以编码方式要以对方的网站为标准。常见的网站中, www.baidu.com (百度)的编码方式是 gb2312, www.google.com (谷歌)的编码方式是 utf8。

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

Encoding myEncoding = Encoding.GetEncoding("gb2312");
string param = HttpUtility.UrlEncode(" 参数一", myEncoding) + "=" + HttpUtility.UrlEncode("值一", myEncoding) + "& amp;" + HttpUtility.UrlEncode("参数二", myEncoding) + "=" + HttpUtility.UrlEncode("值二", myEncoding);

byte[] postBytes = Encoding.ASCII.GetBytes(param);

HttpWebRequest req = (HttpWebRequest) HttpWebRequest.Create( "http://www.baidu.com/s" );
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded;charset=gb2312";
req.ContentLength = postBytes.Length;

using (Stream reqStream = req.GetRequestStream())
{
reqStream.Write(bs, 0, bs.Length);
}
using (WebResponse wr = req.GetResponse())
{
//在这里对接收到的页面内容进行处理
}

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_872453.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

编写个人博客网站的一次经历

我是一直学习java后端开发的,于是想用所学知识写一个网站,记录自己的一些学习知识点或者生活点滴,注意是写,不是搭建,网上有很多的搭建网站教程,界面也多好看,但是为了巩固自己的知识&#xff0…

[转]安全知识3:ASP网站漏洞

以下内容转自 ASP网站漏洞解析及黑客入侵防范方法 如何更好的达到防范黑客攻击,本人提一下个人意见!第一,免费程序不要真的就免费用,既然你可以共享原码,那么攻击者一样可以分析代码。如果在细节上注意防范&#xff0c…

Docker部署Flask网站

最近练练手,防止忘了,在docker上部署了下Flask网站。先单步进行,后面可以通过docker compose直接部署。 1. docker运行mysql,数据持久化到宿主机本地硬盘 docker run --name mysql-flask -d -p 3306:3306 -v /home/mysql/conf:/…

微信公众平台开发详解——由浅入深(微网站、LBS云、Api接口调用、服务号高级接口)

微信公众平台开发详解——由浅入深(微网站、LBS云、Api接口调用、服务号高级接口) 分享一套微信公众平台官方代码教程,由易到难,深入浅出的讲解微信公众平台各种常见功能的开发。 课程内容包括: Api接口调用 lbs应用…

网站性能

一、不同角度的网站性能 普通用户认为的网站性能 网站性能对于普通用户来说,最直接的体现就是响应时间。用户在浏览器上直观感受到的网站响应速度,即从客户端发送请求,到服务器返回响应内容的时间。 做为网站开发人员来说,网站性能…

网站埋点(百度统计)

网站埋点,看数据分析,可以直接用百度统计,功能非常全,自己重新开发一个的话,费时费力,没必要。 https://tongji.baidu.com/web/welcome/basic demo演示 使用教程 1、注册登录 2、登录后新增你的网站 …

CTF Crypto/MISC 在线工具网站

2020.4.2 增加了新佛曰的网站 2020.4.6 添加了Linux系统调用网站 2020.5.25 增加了base58的编码网站,跳舞小人密码,alphabet minimoys密码网站,JS混淆解密网站 在线解码 Unicode(HTML)编码解码:http://www…

houseoforange_hitcon_2016(House of orange, unsorted bin attack,FSOP)

目录 题目分析利用原理house of orangeFSOP 漏洞利用Exp 题目分析 只有添加,显示,编辑三个功能,没有删除 添加函数,最多只能添加四次,每次添加会依次执行malloc(0x10),malloc(name_size),calloc(8),name_size最大为8 H…

javabean+servlet+JSP页面做购物网站 (附效果图+源码)

一个简单的jsp购物网站 概要需求用到的技术效果图登录页登陆结果购物页消费记录页管理用户信息和商品信息数据库格式 踩过的坑jdbc进行数据库操作java动作指令结合jsp脚本jdbc操作数据库查某个变量源码 概要 复习一下学校里学的javabean,写了个简单的购物网站&…

用asp.net写的一个购物网站

文章目录 一、数据库设计二、登录注册三、功能说明以及运行1.首页2.商品分类3.热门零食4.推荐零食5.商品详情页6.我的购物车7.立即购买8.提交订单 总结 一、数据库设计 二、登录注册 1.登录界面 2.注册界面 首先先在数据库表users中插入几条数据,表示这是已经注册…

用前端写的一个网站

文章目录 一、网站首页1.导航栏2.轮播图3.网格系统 二、热门人物三、热门推荐四、国产动漫五、热血日漫六、个人资料设置七、注册登录总结 一、网站首页 1.导航栏 采用了bootstrap导航条组建。用超链接实现跳转。并同时使该网页对应的导航条处于被选中的状态。当鼠标悬停放在该…

基于ASP.Net写的一个购物网站

网站运行录像 在这里 链接:https://pan.baidu.com/s/1NaFNKnQ3UEorasadRf7EIA 提取码:1i6v 复制这段内容后打开百度网盘手机App,操作更方便哦 可以下载观看。 本网站前端利用了如下技术&a…

springboot实现基本购物网站

本项目部分页面来自天天生鲜项目(原项目使用django编写),本项目中所用到的框架: spring boot mybatis jpa bootstrap redis freemaker 实现注册及登录界面: 用户名需满足:非空,长度2-20位. 密码需满足:为6-20位字母、数字的组合. 卖家与买家信息使用不同的数据…

HTML+CSS简单应用实例——购物网站的制作(一)

HTMLCSS简单应用实例——购物网站的制作(一) 这是一个用CSS、HTML、JS制作的简单的购物网站,这篇文章是主页,在后面文章中依次有登录页、商品页、客服页面等。有很多不足之处,希望大家能给我指出来。 先看一下效果图…

HTML+CSS简单应用实例——购物网站的制作(二)注册页面

HTMLCSS简单应用实例——购物网站的制作(二)注册页面 接上一篇文章,本片文章是注册页面。 下面是效果图: 分析:上方欢迎注册是DIV,下面是表单,点击登录按钮会出现注册成功提示。下方为脚本,同…

HTML+CSS简单应用实例——购物网站的制作(三)

HTMLCSS简单应用实例——购物网站的制作(三) 本页面是商品页面。 下面是效果图: 分析:上方大牌女装为DIV,下面是一个滚动图,年度爆款限时五折是table,今日热门活动也是一个大table&#xff…

HTML+CSS简单应用实例——购物网站的制作(四)

HTMLCSS简单应用实例——购物网站的制作(四) 本页面是第二个商品页面,做了个限时抢购的页面。 下面是效果图: 分析:上方限时抢购和12点准时开抢是两个DIV,下面每个商品是一个单独的DIV,总体是一个大的D…

HTML+CSS简单应用实例——购物网站的制作(五)

HTMLCSS简单应用实例——购物网站的制作(五) 本页面是第三个商品页面。 下面是效果图: 分析:上方淘淘超市是一个DIV,下面超值套装每个商品是一个DIV,美容护肤是一个大表格。下面是脚本。 具体代码&…

HTML+CSS简单应用实例——购物网站的制作(六)

HTMLCSS简单应用实例——购物网站的制作&#xff08;六&#xff09; 本页面是一个反馈问卷页面。 效果图&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>淘淘网问卷</title><s…

HTML+CSS简单应用实例——购物网站的制作(七)

HTMLCSS简单应用实例——购物网站的制作&#xff08;七&#xff09; 本页面是客服页面。 效果图&#xff1a; 分析&#xff1a;上方是一个DIV&#xff0c;下面是两个表格&#xff0c;表格里有列表。 具体代码&#xff1a; <!DOCTYPE html> <html><head>&…