【求助】xmlhttp.send() 为什么不能传递参数
最近想学习用xmlhttp提交表。所以用搜狐的个人资料修改页面做练习。
步骤如下;
先createobject("msxml2.xmlhttp")
然后 .open "post",sohuUrl,false ' sohuUrl 是我用httpfox获取的。
然后 .setrequestheader .....
.setrequestheader .....
..... ’ 初学,不知道那些可以忽略,全设置了,包括cookie、referer等等
然后 .send(postData ) ' 提交的数据就是姓名、性别什么的,知道中文要编码,因为练习所以全用的英文。
执行以后,页面没有任何改变。
然后,我尝试 .open “post” ,sohuUrl &name=dfdsf,false ’直接用网址传递参数
结果成功了。
请问,这个到底应该如何写啊???
xmlhttp 参数 --------------------编程问答--------------------
--------------------编程问答-------------------- .open "post",sohuUrl,false
postData="name=dfdsf"
.send(postData)
这里的POST必须用大写才行
--------------------编程问答--------------------
我就是这么写的。 --------------------编程问答--------------------
大写还是不行。 --------------------编程问答-------------------- 附上代码。
Public Sub postDataTest()--------------------编程问答-------------------- 你的 url 中有参数 _sub=post,然后 myData 中又是参数 introduction=fsdfs,没见过这样的用法,合并到 myData 中试试。
Dim http As Object
Dim myData As String
Set http = CreateObject("Msxml2.XMLHTTP")
myData = "introduction=fsdfs"
With http
.Open "POST", "http://i.sohu.com/profile/home/basic.htm?_sub=post", False
' .setrequestheader "(Request-Line)", "POST /profile/home/basic.htm?_sub=post HTTP/1.1"
.setrequestheader "Host", "i.sohu.com"
'.setrequestheader "User-Agent", "Mozilla/5.0 (Windows NT 5.1; rv:23.0) Gecko/20100101 Firefox/23.0"
.setrequestheader "accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
.setrequestheader "Accept-Language", "zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3"
.setrequestheader "accept-encoding", "gzip, deflate"
.setrequestheader "Referer", "http://i.sohu.com/profile/home/basic.htm?from=self"
.setrequestheader "Cookie", "spsession=MTU4NTc3fC0xfDEzODAzMjkzNDN8d3V4aW5ndGlhbnhpYTI=-hAP7VtdzxgwNNJ+b/le2i5D6aDg=; domain=.sohu.com; path=/; HttpOnly"
.setrequestheader "Connecion", "keep-alive"
.setrequestheader "contenet-type", "application/x-www.form-urlencoded"
.setrequestheader "Content-Length", Len(myData)
.send (myData)
' Do While Not .readyState = 4
' DoEvents
' Loop
'Debug.Print .responseText
End With
End Sub
setrequestheader 中 Content-Length 可以省略,而且你只算了一个参数的长度,反而错了。 --------------------编程问答--------------------
_sub=post这个是我用抓包工具抓到的网址。
我把它放到myData里还是不行
Content-Length我也删了。 --------------------编程问答-------------------- 服务端取得几个参数?
不会是你的 Session 超时了吧。 --------------------编程问答--------------------
Senssion超时应该不可能,我在网址添加参数 &name=djfkjdk ,这样可以成功上传 --------------------编程问答-------------------- Post的时候加个这样的头
如果还不行的话会不会你电脑有问题,我原来电脑就这样,IIS里处理不了Post的内容,后来电脑重装了
--------------------编程问答--------------------
XML.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"
你 5 楼代码没有 name 参数,不具备可比性。 --------------------编程问答--------------------
用网址传递&introduction=fsdfs 这个参数可以
但是用send()方法就失败了。
--------------------编程问答--------------------
Post的时候加个这样的头
如果还不行的话会不会你电脑有问题,我原来电脑就这样,IIS里处理不了Post的内容,后来电脑重装了
XML.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"
反正头消息我都设置过了。
实在是没有头绪啊。
真的不行,那没办法了,试试重装了。 --------------------编程问答-------------------- 先不要用代码来提交,手工做个页面,在页面里提交试试,
当时我的电脑手工提交都不行。
服务器端是在你电脑上吗? --------------------编程问答-------------------- 你QQ多少,我帮你写个吧,刚今天帮台湾人写了一个POST工具
我们做了10多年软件,这方面技术成熟 --------------------编程问答--------------------
你QQ多少,我帮你写个吧,刚今天帮台湾人写了一个POST工具
我们做了10多年软件,这方面技术成熟
谢谢,我的qq是342725434 --------------------编程问答--------------------
你QQ多少,我帮你写个吧,刚今天帮台湾人写了一个POST工具
我们做了10多年软件,这方面技术成熟
谢谢,我的qq是342725434
帮忙写就算了,系统在内网里。你应该接触不到。
我个人也仅仅是为了提高工作效率才自学的编程。
如果可以,给我看下post部分的源代码,让我参考下可以吗?
补充:VB , VBA