由于工作需要,需要vb提交xml数据到服务器上,所以,需要找到一个好的方法。
之前有代码使用了MSXML2.XMLHTTP对象进行xml数据取得,而且链接是https形式的,于是就参照代码提交,写了下面这么一个函数,来进行操作
1 Private Function CallAPI(url1 As String,filePath String) 2 'load file 3 Dim document As MSXML2.DOMDocument 4 Set document = CreateObject("MSXML2.DOMDocument") 5 document.Load filePath load xml file 6 send data to server 7 Dim xmlHttp As MSXML2.XMLHTTP 8 Set xmlHttp = MSXML2.XMLHTTP 9 xmlHttp.Open POST",url1,False post method to 10 xmlHttp.setRequestHeader Content-Typeapplication/xml" xml type of http request xml,not text/xml 11 xmlHttp.send (document.xml) 12 clear 13 nothing 14 15 End Function
但是,提交总是失败,在下面的这句代码就被中断,一直找不到原因。
突然想到http协议和https协议是不同的,可能在提交数据时有差异,猜测MSXML2.XMLHTTP对象应该不支持https,经过寻找找到另一个对象WinHttp.WinHttpRequest,于是有了下面的代码
总结:
1.MSXML2.XMLHTTP对象不能提交https数据到服务器上
2.WinHttp.WinHttpRequest对象需要显式的设置用户名和密码,在MSXML2.XMLHTTP对象使用的过程中,没有登录的话,会弹出用户名和密码输入框,而WinHttp.WinHttpRequest对象没有,直接提交数据后,提示没有权限
3. 提交xml对象时,设置的请求头部应该是"Content-Type","application/xml"而不是"Content-Type","text/xml"
其它对象也可以达到https提交的效果:
注:WinHttp.WinHttpRequest对象需要添加Microsoft WinHTTP Services,version 5.1组件的引用
MSXML2.XMLHTTP和MSXML2.ServerXMLHTTP需要添加Microsoft MsXml组件的引用
原文地址:https://www.jb51.cc/vb/257178.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。