扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
不想一点一点写了,粘贴给你吧
创新互联公司专注于网站建设,为客户提供成都做网站、成都网站设计、网页设计开发服务,多年建网站服务经验,各类网站都可以开发,成都品牌网站建设,公司官网,公司展示网站,网站设计,建网站费用,建网站多少钱,价格优惠,收费合理。
使用 HttpWebRequest 向网站提交数据
HttpWebRequest 是 .net 基类库中的一个类,在命名空间 System.Net 下面,用来使用户通过 HTTP 协议和服务器交互。
HttpWebRequest 对 HTTP 协议进行了完整的封装,对 HTTP 协议中的 Header, Content, Cookie 都做了属性和方法的支持,很容易就能编写出一个模拟浏览器自动登录的程序。
程序使用 HTTP 协议和服务器交互主要是进行数据的提交,通常数据的提交是通过 GET 和 POST 两种方式来完成,下面对这两种方式进行一下说明:
1. GET 方式。 GET 方式通过在网络地址附加参数来完成数据的提交,比如在地址 中,前面部分 表示数据提交的网址,后面部分 hl=zh-CN 表示附加的参数,其中 hl 表示一个键(key), zh-CN 表示这个键对应的值(value)。程序代码如下:
HttpWebRequest req = (HttpWebRequest) HttpWebRequest.Create( "" );
req.Method = "GET";
using (WebResponse wr = req.GetResponse())
{
//在这里对接收到的页面内容进行处理
}
2. POST 方式。 POST 方式通过在页面内容中填写参数的方法来完成数据的提交,参数的格式和 GET 方式一样,是类似于 hl=zh-CNnewwindow=1 这样的结构。程序代码如下:
string param = "hl=zh-CNnewwindow=1";
byte[] bs = Encoding.ASCII.GetBytes(param);
HttpWebRequest req = (HttpWebRequest) HttpWebRequest.Create( "" );
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())
{
//在这里对接收到的页面内容进行处理
}
在上面的代码中,我们访问了 的网址,分别以 GET 和 POST 方式提交了数据,并接收了返回的页面内容。然而,如果提交的参数中含有中文,那么这样的处理是不够的,需要对其进行编码,让对方网站能够识别。
3. 使用 GET 方式提交中文数据。 GET 方式通过在网络地址中附加参数来完成数据提交,对于中文的编码,常用的有 gb2312 和 utf8 两种,用 gb2312 方式编码访问的程序代码如下:
Encoding myEncoding = Encoding.GetEncoding("gb2312");
string address = "?" + HttpUtility.UrlEncode("参数一", myEncoding) + "=" + HttpUtility.UrlEncode("值一", myEncoding);
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(address);
req.Method = "GET";
using (WebResponse wr = req.GetResponse())
{
//在这里对接收到的页面内容进行处理
}
在上面的程序代码中,我们以 GET 方式访问了网址 ,传递了参数“参数一=值一”,由于无法告知对方提交数据的编码类型,所以编码方式要以对方的网站为标准。常见的网站中, (百度)的编码方式是 gb2312, (谷歌)的编码方式是 utf8。
4. 使用 POST 方式提交中文数据。 POST 方式通过在页面内容中填写参数的方法来完成数据的提交,由于提交的参数中可以说明使用的编码方式,所以理论上能获得更大的兼容性。用 gb2312 方式编码访问的程序代码如下:
Encoding myEncoding = Encoding.GetEncoding("gb2312");
string param = HttpUtility.UrlEncode("参数一", myEncoding) + "=" + HttpUtility.UrlEncode("值一", myEncoding) + "" + HttpUtility.UrlEncode("参数二", myEncoding) + "=" + HttpUtility.UrlEncode("值二", myEncoding);
byte[] postBytes = Encoding.ASCII.GetBytes(param);
HttpWebRequest req = (HttpWebRequest) HttpWebRequest.Create( "" );
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 的情况下。
Private Sub Command1_Click()
ReferForm "WebBrowser1", 2, "message", Text1.Text
End Sub
Private Sub Command2_Click()
ReferForm "WebBrowser1", 8, "submit"
End Sub
Private Sub Form_Load()
WebBrowser1.Navigate ("")
End Sub
'*************************************************************************
'**函 数 名:ReferForm
'**中文意译:表单提交
'**输 入:ByVal WebbrowserA(String) - webbrowser控件名
'** :ByVal FormType(Integer) - 集合 表单类型
'** Text = 0; password = 1; textarea = 2; Hidden = 3; CheckBox = 4; submit = 8; button = 9
'** :Optional FormName(String) - 表单名[可选]
'** :Optional Value(String = "") - 表单值[可选]
'**输 出:无
'**功能描述:
'** :
'**作 者:最恨VB
'**日 期:2008-01-31 07:46:14
'*************************************************************************
Sub ReferForm(ByVal Webbrowser$, ByVal FormType%, Optional FormName$, Optional Value$ = "")
If FormType 0 Or FormType 9 Then
Exit Sub
End If
Dim objDoc, objTag
Set objDoc = Me.Controls(Webbrowser).Document
For i = 0 To objDoc.All.length - 1
Select Case UCase$(objDoc.All(i).tagName)
Case "INPUT"
Set objTag = objDoc.All(i)
Select Case FormType
Case 0, 1
If objTag.Name = FormName Then
objTag.Value = Value
End If
Case 3
Case 4
If objTag.Name = FormName Then
objTag.Click
End If
Case 8
If objTag.Type = FormName Then
objTag.Click
End If
Case 9
If objTag.Type = FormName Then
objTag.Click
End If
End Select
Case "TEXTAREA"
Set objTag = objDoc.All(i)
Select Case FormType
Case 2
objTag.Value = Value
End Select
End Select
Next
End Sub
这个是 VB6的代码的
我的.NET 出问题了 要不就帮改过来了
你要想用的话 增加一个 WebBrowser
一个 文本框 两个按钮 试试吧 应该很容易的
图有点模糊。
服务器端要有方法接收,接收的参数要看方法的定义。
Controller A里面假设有这个get Action
httppost
function get(frm as formcollection) as actionresult
dim a as string=frm("keyword")
return content(a)
end function
页面View 中
@Using FormBegin("get","A","POST")
@div
input name="keyword" type="text"/
Input type="submit" value="提交"/
end using
你在页面上点击按钮“提交”后,就会把表单的中keyword文本框的内容赋值给a.
这里我用的是MVC..前端用的VB Razor.
Cookie丢了
登陆的时候,把CookieContainer保存下来,可以设置一个全局变量,然后再getBody的时候,
request.Cookiecontainer设置为这个CookieContainer即可
1.费尔托斯特安全是一款同时拥有反木马、反病毒、反Rootkit功能的强大防毒软件,支持Windows安全中心,能对每一个文件活动进行实时监控,并且资源占用率极低,具有非凡的扫描速度。先进的动态防御系统将动态跟踪电脑中的每一个活动程序,智能侦测出其中的未知木马病毒,并拥有极高的识别率。
2.国际一流的网页病毒分析技术,拥有最出色的恶意网站识别能力。能够识别出经过加壳处理的文件,有效防范加壳木马病毒。
3.它的“系统快速修工具”可以对IE、Windows、注册表,映像劫持等常见故障进行一键修复。
4.
“木马强力清除助手”可以轻松清除那些用普通防毒软件难以清除掉的顽固性木马病毒,并可抑制其再次生成。注册表实时监控能够高效阻止和修复木马病毒对注册表的恶意破坏。
5.拥有海量的病毒特征库和卡巴一样每三个小一更新,不断提升对新木马新病毒的反应能力。
6.天空软件站/傲游天下科技有限公司携手推荐常用软件--费尔托斯特安全
V7
R3
费尔托斯特安全
注册码:
8BB5-F475-576B-41D1-1881
这个软件查杀木马病毒,修复受损文件很不错。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流