Ivan 发表于 2007-10-20 21:36:00
1。.send()
由于流行的小偷是使用的GET而不是POST来传送数据,所以很多人忽略了这个方法,而使用SEND发送数据也很简单,就是SEND("内容"),可是,
发送表单就不是这么简单,因为你发送的表单如果是中文的话,就要牵扯到编码的问题了。
首先,你在OPEN 时要确定是用POST 即 .open("OST",地址,是否异步)
然后,在SEND里面加上你表单的内容,比如说,你要提交的表单有3个表单域,分别是A,B,C,对应的值分别是1,2,3,那么,你在SEND里这
样写就可以提交表单了,.send("A=1&B=2&C=3"),怎么样,很简单吧,是不是没想到呢?但是别高兴的太早了,我前面说到了,如果表单的值是
中文的话,数据传输的就会出错了。这里我们借助一个函数escape(),熟悉JAVASCRIPT的朋友都应该知道这个函数的作用了,现在VBSCRIPT同样支持这个函数。.send("A=escape('值1')&B=escape('值2')&C=escape('值3')")
2。.setRequestHeader()
接着上面的所说,你的数据send出去了,对方却不会接收到,为什么了,其实,那是因为你的HTTP头少了一个东西,然后用这个函数把加上去就可以了,具体就是.setRequestHeader("CONTENT-TYPE","application/x-www-form-urlencoded"), 告诉对方你是提交了一个urlencode编码的表单。
知道上面的方法就可以利用这个函数在HTTP头里添加东西.如cookies和session
set http=Server.createobject("Microsoft.XMLHTTP")
Http.open "GET",url,false
'HTTP的通信方式,比如GET或是POST '接收XML数据的服务器的URL地址。通常在URL中要指明ASP或CGI程序
'如果是异步通信方式(true)如果是同步方式(false)
Http.send()
'Send方法的参数类型是Variant,可以是字符串、DOM树或任意数据流。
'发送数据的方式分为同步和异步两种。在异步方式下,数据包一旦发送完毕,就结束Send进程,
'客户机执行其他的操作;而在同步方式下,客户机要等到服务器返回确认消息后才结束Send进程
if Http.readystate<>4 then
'0 Response对象已经创建,但XML文档上载过程尚未结束
'1 XML文档已经装载完毕
'2 XML文档已经装载完毕,正在处理中
'3 部分XML文档已经解析
'4 文档已经解析完毕,客户端可以接受返回消息
exit function
end if
GetHTTPPage = bytesToBSTR(Http.responseBody,"GB2312")'bytesToBSTR 编码转化函数
'===对Http.responseBody的解释===
'responseText:将返回消息作为文本字符串;
'responseBody:将返回消息作为HTML文档内容;
'responseXML:将返回消息视为XML文档,在服务器响应消息中含有XML数据时使用;
'responseStream:将返回消息视为Stream对象
'response.write GetHTTPPage
set http = Nothing