【求助】xmlhttp.send() 为什么不能传递参数

时间:2021-01-29 13:47:07
最近想学习用xmlhttp提交表。
所以用搜狐的个人资料修改页面做练习。
步骤如下;
先createobject("msxml2.xmlhttp")
然后 .open "post",sohuUrl,false          '  sohuUrl    是我用httpfox获取的。
然后 .setrequestheader  .....           
        .setrequestheader  ..... 
         .....                                            ’ 初学,不知道那些可以忽略,全设置了,包括cookie、referer等等
然后 .send(postData  )                  ' 提交的数据就是姓名、性别什么的,知道中文要编码,因为练习所以全用的英文。

执行以后,页面没有任何改变。

然后,我尝试 .open “post” ,sohuUrl &name=dfdsf,false      ’直接用网址传递参数
结果成功了。


请问,这个到底应该如何写啊???

18 个解决方案

#1



postData="name=dfdsf"
.send(postData)

#2


.open "post",sohuUrl,false
这里的POST必须用大写才行

#3


引用 1 楼 Previouspage 的回复:

postData="name=dfdsf"
.send(postData)


我就是这么写的。

#4


引用 2 楼 xiaoyao961 的回复:
.open "post",sohuUrl,false
这里的POST必须用大写才行


大写还是不行。

#5


附上代码。
Public Sub postDataTest()
    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

#6


你的 url 中有参数  _sub=post,然后 myData 中又是参数  introduction=fsdfs,没见过这样的用法,合并到 myData 中试试。
setrequestheader 中  Content-Length 可以省略,而且你只算了一个参数的长度,反而错了。

#7


引用 6 楼 Tiger_Zhao 的回复:
你的 url 中有参数  _sub=post,然后 myData 中又是参数  introduction=fsdfs,没见过这样的用法,合并到 myData 中试试。
setrequestheader 中  Content-Length 可以省略,而且你只算了一个参数的长度,反而错了。


_sub=post这个是我用抓包工具抓到的网址。
我把它放到myData里还是不行
Content-Length我也删了。 

#8


服务端取得几个参数?
不会是你的 Session 超时了吧。

#9


引用 8 楼 Tiger_Zhao 的回复:
服务端取得几个参数?
不会是你的 Session 超时了吧。


Senssion超时应该不可能,我在网址添加参数  &name=djfkjdk ,这样可以成功上传

#10


Post的时候加个这样的头
如果还不行的话会不会你电脑有问题,我原来电脑就这样,IIS里处理不了Post的内容,后来电脑重装了

XML.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"

#11


引用 9 楼 zhangwu2cn 的回复:
Senssion超时应该不可能,我在网址添加参数  &name=djfkjdk ,这样可以成功上传

你 5 楼代码没有 name 参数,不具备可比性。

#12


引用 11 楼 Tiger_Zhao 的回复:
Quote: 引用 9 楼 zhangwu2cn 的回复:
Senssion超时应该不可能,我在网址添加参数  &name=djfkjdk ,这样可以成功上传

你 5 楼代码没有 name 参数,不具备可比性。


用网址传递&introduction=fsdfs 这个参数可以
但是用send()方法就失败了。

#13


引用 10 楼 bakw 的回复:
Post的时候加个这样的头
如果还不行的话会不会你电脑有问题,我原来电脑就这样,IIS里处理不了Post的内容,后来电脑重装了

XML.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"


反正头消息我都设置过了。
实在是没有头绪啊。
真的不行,那没办法了,试试重装了。 

#14


先不要用代码来提交,手工做个页面,在页面里提交试试,
当时我的电脑手工提交都不行。
服务器端是在你电脑上吗?

#15


你QQ多少,我帮你写个吧,刚今天帮*人写了一个POST工具
我们做了10多年软件,这方面技术成熟

#16


引用 15 楼 xiaoyao961 的回复:
你QQ多少,我帮你写个吧,刚今天帮*人写了一个POST工具
我们做了10多年软件,这方面技术成熟


谢谢,我的qq是342725434

#17


引用 16 楼 zhangwu2cn 的回复:
Quote: 引用 15 楼 xiaoyao961 的回复:

你QQ多少,我帮你写个吧,刚今天帮*人写了一个POST工具
我们做了10多年软件,这方面技术成熟


谢谢,我的qq是342725434


帮忙写就算了,系统在内网里。你应该接触不到。

我个人也仅仅是为了提高工作效率才自学的编程。

如果可以,给我看下post部分的源代码,让我参考下可以吗?

#18


你在开头说:
然后 .send(postData  )    ' 提交的数据就是姓名、性别什么的,知道中文要编码,因为练习所以全用的英文。
请问怎样在请求路径里面发送中文参数啊?我现在遇到这样的问题了,怎样解决传递中文参数的问题啊,谢谢!

#1



postData="name=dfdsf"
.send(postData)

#2


.open "post",sohuUrl,false
这里的POST必须用大写才行

#3


引用 1 楼 Previouspage 的回复:

postData="name=dfdsf"
.send(postData)


我就是这么写的。

#4


引用 2 楼 xiaoyao961 的回复:
.open "post",sohuUrl,false
这里的POST必须用大写才行


大写还是不行。

#5


附上代码。
Public Sub postDataTest()
    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

#6


你的 url 中有参数  _sub=post,然后 myData 中又是参数  introduction=fsdfs,没见过这样的用法,合并到 myData 中试试。
setrequestheader 中  Content-Length 可以省略,而且你只算了一个参数的长度,反而错了。

#7


引用 6 楼 Tiger_Zhao 的回复:
你的 url 中有参数  _sub=post,然后 myData 中又是参数  introduction=fsdfs,没见过这样的用法,合并到 myData 中试试。
setrequestheader 中  Content-Length 可以省略,而且你只算了一个参数的长度,反而错了。


_sub=post这个是我用抓包工具抓到的网址。
我把它放到myData里还是不行
Content-Length我也删了。 

#8


服务端取得几个参数?
不会是你的 Session 超时了吧。

#9


引用 8 楼 Tiger_Zhao 的回复:
服务端取得几个参数?
不会是你的 Session 超时了吧。


Senssion超时应该不可能,我在网址添加参数  &name=djfkjdk ,这样可以成功上传

#10


Post的时候加个这样的头
如果还不行的话会不会你电脑有问题,我原来电脑就这样,IIS里处理不了Post的内容,后来电脑重装了

XML.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"

#11


引用 9 楼 zhangwu2cn 的回复:
Senssion超时应该不可能,我在网址添加参数  &name=djfkjdk ,这样可以成功上传

你 5 楼代码没有 name 参数,不具备可比性。

#12


引用 11 楼 Tiger_Zhao 的回复:
Quote: 引用 9 楼 zhangwu2cn 的回复:
Senssion超时应该不可能,我在网址添加参数  &name=djfkjdk ,这样可以成功上传

你 5 楼代码没有 name 参数,不具备可比性。


用网址传递&introduction=fsdfs 这个参数可以
但是用send()方法就失败了。

#13


引用 10 楼 bakw 的回复:
Post的时候加个这样的头
如果还不行的话会不会你电脑有问题,我原来电脑就这样,IIS里处理不了Post的内容,后来电脑重装了

XML.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"


反正头消息我都设置过了。
实在是没有头绪啊。
真的不行,那没办法了,试试重装了。 

#14


先不要用代码来提交,手工做个页面,在页面里提交试试,
当时我的电脑手工提交都不行。
服务器端是在你电脑上吗?

#15


你QQ多少,我帮你写个吧,刚今天帮*人写了一个POST工具
我们做了10多年软件,这方面技术成熟

#16


引用 15 楼 xiaoyao961 的回复:
你QQ多少,我帮你写个吧,刚今天帮*人写了一个POST工具
我们做了10多年软件,这方面技术成熟


谢谢,我的qq是342725434

#17


引用 16 楼 zhangwu2cn 的回复:
Quote: 引用 15 楼 xiaoyao961 的回复:

你QQ多少,我帮你写个吧,刚今天帮*人写了一个POST工具
我们做了10多年软件,这方面技术成熟


谢谢,我的qq是342725434


帮忙写就算了,系统在内网里。你应该接触不到。

我个人也仅仅是为了提高工作效率才自学的编程。

如果可以,给我看下post部分的源代码,让我参考下可以吗?

#18


你在开头说:
然后 .send(postData  )    ' 提交的数据就是姓名、性别什么的,知道中文要编码,因为练习所以全用的英文。
请问怎样在请求路径里面发送中文参数啊?我现在遇到这样的问题了,怎样解决传递中文参数的问题啊,谢谢!