热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MSXML2.XMLHTTP.4.0对象

一、使用步骤:1、创建XMLHTTP对象需MSXML4.0支持2、打开与服务端的连接,同时定义指令发送方式,服务网页(URL)和请求权限

一、使用步骤:
1、创建XMLHTTP对象 //需MSXML4.0支持
2、打开与服务端的连接,同时定义指令发送方式,服务网页(URL)和请求权限等。客户端通过Open命令打开与服务端的服务网页的连接。与普
通HTTP指令传送一样,可以用"GET"方法或"POST"方法指向服务端的服务网页。 
3、发送指令。 
4、等待并接收服务端返回的处理结果。 
5、释放XMLHTTP对象 
 
二、XMLHTTP方法: 
Open(bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword )
bstrMethod:  数据传送方式,即GET或POST。 
bstrUrl:     服务网页的URL。 
varAsync:   是否同步执行。缺省为True,即同步执行,但只能在DOM中实施同步执行。用中一般将其置为False,即异步执行。 
bstrUser:    用户名,可省略。 
bstrPassword:用户口令,可省略。 
 
Send(varBody )
varBody:指令集。可以是XML格式数据,也可以是字符串,流,或者一个无符号整数数组。也可以省略,让指令通过Open方法的URL参数代入。 
 
setRequestHeader( bstrHeader, bstrvalue )
bstrHeader:HTTP 头(header) 
bstrvalue: HTTP 头(header)的值 
如果Open方法定义为POST,可以定义表单方式上传: 
xmlhttp.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded") 
 
三、XMLHTTP属性: 
onreadystatechange:在同步执行方式下获得返回结果的事件句柄。只能在DOM中调用。 
responseBody:   结果返回为无符号整数数组。 
responseStream:  结果返回为IStream流。 
responseText:   结果返回为字符串。 
responseXML:   结果返回为XML格式数据。

通过responseBody属性获得的内容需要下面这个函数转换为正常字符串,否则是乱码:
Function bytes2BSTR(arrBytes)
strReturn = ""
arrBytes = CStr(arrBytes)
For i = 1 To LenB(arrBytes)
ThisCharCode = AscB(MidB(arrBytes, i, 1))
If ThisCharCode <&H80 Then
strReturn &#61; strReturn & Chr(ThisCharCode)
Else
NextCharCode &#61; AscB(MidB(arrBytes, i&#43;1, 1))
strReturn &#61; strReturn & Chr(CLng(ThisCharCode) * &H100 &#43; CInt(NextCharCode))
i &#61; i &#43; 1
End If
Next
bytes2BSTR &#61; strReturn
End Function


四、示例&#xff1a;
以下是代码片段&#xff1a;
< script language&#61;"Javascript" >  
function getDatal(url){  
    var xmlhttp &#61; new ActiveXObject("MSXML2.XMLHTTP.4.0");//创建XMLHTTPRequest对象&#xff0c;需MSXML4.0支持  
["MSXML2.XMLHTTP.4.0","MSXML2.DOMDocument.4.0"] 
    xmlhttp.open("GET",url,false,"","");   //使用HTTP GET初始化HTTP请求  
    xmlhttp.send("");                   //发送HTTP请求并获取HTTP响应  
    return xmlhttp.responseXML;         //获取XML文档  
}  
 

常见问题&#xff1a;
msxml3.dll 错误 &#39;80070005&#39; 拒绝访问。
代码如下&#xff1a;
PostUrl&#61;http://www.exponow.cn/
Server.ScriptTimeOut&#61;20
Set oXMLHttp &#61; createObject("Microsoft.XMLHTTP")
Call oXMLHttp.Open("get", PostUrl, false)
Call oXMLHttp.Send("")
sHtmlStr &#61; oXMLHttp.responseBody
Set oXMLHttp &#61; nothing

初步判定可能是打开的页面有跳转的原因&#xff0c;解决办法是用
MSXML2.ServerXMLHTTP
替换掉
Microsoft.XMLHTTP
即可解决。

另外在CSDN上找到这么一段代码
PostUrl&#61;"
http://www.exponow.cn/"
ServerURL&#61;PostUrl
Set Mail1 &#61; Server.CreateObject("CDO.Message")
Mail1.CreateMHTMLBody ServerURL,31  
AA&#61;Mail1.HTMLBody
Set Mail1 &#61; Nothing
Response.Write AA

试了一下&#xff0c;也可以用&#xff0c;拷过来收藏

GET与POST方法的区别&#xff1a;

什么时候用get请求,什么时候用post方式请求呢? 在做回答前我们首先要了解get和post的区别.

        1、 get是把参数数据队列加到提交表单的ACTION属性所指的URL中&#xff0c;值和表单内各个字段一一对应&#xff0c;在URL中可以看到。post是通过HTTP post机制&#xff0c;将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。

        2、 对于get方式&#xff0c;服务器端用Request.QueryString获取变量的值&#xff0c;对于post方式&#xff0c;服务器端用Request.Form获取提交的数据。两种方式的参数都可以用Request来获得。

        3、get传送的数据量较小&#xff0c;不能大于256KB。post传送的数据量最大为4M&#xff0c;一般被默认为不受限制。但理论上&#xff0c;因服务器的不同而异.

        4、get安全性非常低&#xff0c;post安全性较高。

        5、 跟是一样的&#xff0c;也就是说&#xff0c;method为get时action页面后边带的参数列表会被忽视&#xff1b;而跟是不一样的。

        另外
        Get请求有如下特性&#xff1a;它会将数据添加到URL中&#xff0c;通过这种方式传递到服务器&#xff0c;通常利用一个问号&#xff1f;代表URL地址的结尾与数据参数的开端&#xff0c;后面的参数每一个数据参数以“名称&#61;值”的形式出现&#xff0c;参数与参数之间利用一个连接符&来区分。
Post请求有如下特性&#xff1a;数据是放在HTTP主体中的&#xff0c;其组织方式不只一种&#xff0c;有&连接方式&#xff0c;也有分割符方式&#xff0c;可隐藏参数&#xff0c;传递大批数据&#xff0c;比较方便。

        通过以上的说明,现在我们大致了解了什么时候用get什么时候用post方式了吧,对!当我们在提交表单的时候我们通常用post方式,当我们要传送一个较大的数据文件时,需要用post。当传递的值只需用参数方式(这个值不大于256KB)的时候,用get方式即可。

        现在我们再看看通过URL发送请求时&#xff0c;get方式和post方式的区别。用下面的例子可以很容易的看到同样的数据通过GET和POST来发送的区别, 发送的数据是 username&#61;张三 :
GET 方式, 浏览器键入 http://localhost?username&#61;张三

GET /?username&#61;%E5%BC%A0%E4%B8%89 HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */*
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)
Host: localhost
Connection: Keep-Alive

POST 方式:

POST / HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */*
Accept-Language: zh-cn
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)
Host: localhost
Content-Length: 28
Connection: Keep-Alive

username&#61;%E5%BC%A0%E4%B8%89

区别就是一个在 URL 请求里面附带了表单参数和值, 一个是在 HTTP 请求的消息实体中。

比较一下上面的两段文字, 我们会发现 GET 方式把表单内容放在前面的请求头中, 而 POST 则把这些内容放在请求的主体中了, 同时 POST 中把请求的 Content-Type 头设置为 application/x-www-form-urlencoded. 而发送的正文都是一样的, 可以这样来构造一个表单提交正文:
encodeURIComponent(arg1)&#61;encodeURIComponent(value1)&encodeURIComponent(arg2)&#61;encodeURIComponent(value2)&.....

注: encodeURIComponent 返回一个包含了 charstring 内容的新的 String 对象&#xff08;Unicode 格式&#xff09;&#xff0c; 所有空格、标点、重音符号以及其他非 ASCII 字符都用 %xx 编码代替&#xff0c;其中 xx 等于表示该字符的十六进制数。 例如&#xff0c;空格返回的是 "%20" 。 字符的值大于 255 的用 %uxxxx 格式存储。参见 Javascript 的 encodeURIComponent() 方法.

在了解了上面的内容后我们现在用ajax的XMLHttpRequest对象向服务器分别用GET和POST方式发送一些数据。

GET 方式
var postContent &#61;"name&#61;" &#43; encodeURIComponent("xiaocheng") &#43; "&email&#61;" &#43; encodeURIComponent("xiaochengf_21&#64;yahoo.com.cn");
xmlhttp.open("GET", "somepage" &#43; "?" &#43; postContent, true);
xmlhttp.send(null);


POST 方式

var postContent &#61;"name&#61;" &#43; encodeURIComponent("xiaocheng") &#43; "&email&#61;" &#43; encodeURIComponent("xiaochengf_21&#64;yahoo.com.cn");
xmlhttp.open("POST", "somepage", true);
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
//xmlhttp.setRequestHeader("Content-Type", "text/xml"); //如果发送的是一个xml文件
xmlhttp.send(postContent);

 

 

 



推荐阅读
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • WebSocket与Socket.io的理解
    WebSocketprotocol是HTML5一种新的协议。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送 ... [详细]
  • 怎么在PHP项目中实现一个HTTP断点续传功能发布时间:2021-01-1916:26:06来源:亿速云阅读:96作者:Le ... [详细]
  • position属性absolute与relative的区别和用法详解
    本文详细解读了CSS中的position属性absolute和relative的区别和用法。通过解释绝对定位和相对定位的含义,以及配合TOP、RIGHT、BOTTOM、LEFT进行定位的方式,说明了它们的特性和能够实现的效果。同时指出了在网页居中时使用Absolute可能会出错的原因,即以浏览器左上角为原始点进行定位,不会随着分辨率的变化而变化位置。最后总结了一些使用这两个属性的技巧。 ... [详细]
  • 本文讨论了如何在codeigniter中识别来自angularjs的请求,并提供了两种方法的代码示例。作者尝试了$this->input->is_ajax_request()和自定义函数is_ajax(),但都没有成功。最后,作者展示了一个ajax请求的示例代码。 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
author-avatar
tuitu
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有