zoukankan      html  css  js  c++  java
  • XMLHTTP使用详解

    XMLHTTP对象是Microsoft的MSXML开发包中带的一个用HTTP,XML协议访问web资源的对象. 从MSXML3.0开始出现. 它在AJAX技术中主要用来从其他网络资源获取信息,然后由javascript来更新页面中的部分内容.
    采用这种方法将页面可更新内容细化,不需要更新很少的内容而刷新整个页面.
     
    XMLHTTP对象的使用方法如下:
    1- 创建XMLHTTP对象,不同的浏览器创建方式不同,本文以IE为例说明.
    2- 用XMLHTTP对象向外部资源发送请求信息, 同步或异步获得返回结果
    3- 处理返回结果,在页面上显示,这时要用到javascript相关技术
     
    XMLHTTP对象的方法如下: (函数原型采用VB语法)
     
    Sub abort()
    中断当前对象的HTTP请求.
     

     Function getAllResponseHeaders() As String

    获取HTTP响应结果中的全部Header信息,以字符串格式表示

     Function getResponseHeader(bstrHeader As String) As String

     
    获取HTTP响应结果Header中指定名称的值,用字符串表示,如果不存在则返回空串
     
    Sub open(bstrMethod As String, bstrUrl As String, [varAsync], [bstrUser], [bstrPassword])
    初始化HTTP连接请求对象,设置请求方法,地址,认证信息.
    bstrMethod可用值有GET,POST,HEAD,定义向HTTP提交请求的方式;必填
    bstrUrl为要访问的HTTP资源地址;必填
    varAsync 可选项,设置是异步还是同步等待返回结果,true-异步方式,false-同步方式,缺省是异步方式;
    如果HTTP请求要求用户名和口令,则在bstrUser,bstrPassword中设置.
     
     
    Sub send ([varBody])
    向服务器发送一个HTTP请求,并获取返回结果.
    varBody为要发送到服务器的数据,通常在POST方式下使用.
     
    Sub setRequestHeader(bstrHeader As String, bstrValue As String)
    在请求header中设置bstrHeader/bstrValue值对并发送到服务器端.
    例:

    xmlReq.setRequestHeader("Content-Type",

    "application/x-www-form-urlencoded; charset=UTF-8");

     
     

     XMLHTTP属性

     

    onreadystatechange

     
     设置请求对象状态readystate改变时要调用的函数对象;
     

    readyState

     

    请求对象的状态值,含义如下:

    0 - 请求对象被创建,但未初始化,即open方法未调用

    1 - 装载中,open方法已调用,send方法未调用

    2 - 已装载,send方法已调用,但还未获得Header信息

    3 - 交互中,已获取了部分信息,这时调用responseText将得到不完整信息,会返回错误

    4 - 所有数据已接收完成,可用responseText或responseBody得到完整数据

     responseBody

     

    表示从HTTP响应得到的返回原始信息,内容的编码方式决定于请求的服务器端(UTF-8, UCS-2, UCS-4, Shift_JIS等)

     

    responseText

     

     HTTP请求返回数据体的字符串表示,缺省情况下用utf-8编码后返回,如果返回内容中有中文,服务器端的数据必须用utf-8编码,否则就会出现乱码。

     

    responseStream

     

    HTTP请求返回数据的流对象,该对象实现IStream接口.

     

    responseXML

     

    返回XML格式的数据对象. 服务器端返回数据为XML格式数据时可用.服务器端用动态语言生成xml时,必须设置content-type为text/xml,否则客户端得到的responseXML为空

     

    status

     HTTP返回代码.
    200 - 成功
    404 - 错误请求
    500 - 服务器内部错误,等等. 详见HTTP协议.
     
    statusText
    HTTP返回状态文本描述.
     
    上面说明了XMLHTTP的方法和属性,下面列一些使用实例.
     
     
     例1  连接到google,显示获得的信息
     
     
    <script language="javascript">
     
     
    function getGoogle(){
        var xmlReq ;
        try{
            xmlReq = new ActiveXObject("Microsoft.XMLHTTP");
     
            var web = "http://www.google.com";
     
            //异步方式
            xmlReq.open("GET",web,true);
            xmlReq.onreadystatechange = function(){
                  if (xmlReq.readystate == 4){
                          document.write(xmlReq.responseText);
                  }
     
            }
     
            xmlReq.send();
     
        catch(e){
           
             alert(e);
        }
        
    }
     
    </script>
     
     
     例2 用POST方法发送数据到web服务器
     
    <script language="javascript" >
        var xmlReq ;
        function sendData(){
            
              try{
     
                        xmlReq = new ActiveXObject("MSXML2.XMLHTTP");
                        var data = "name=james&id=1234";
                        var web = "http://www.myweb.com/login.jsp"    //实际运行要换为存在的一个地址
                        xmlReq.open("POST",web,true);
                        xmlReq.onreadystatechange = resHandler;         //设置返回值处理函数
                        xmlReq.setRequestHeader("Content-Type","

               xmlReq.setRequestHeader("Content-Type",

    "application/x-www-form-urlencoded; charset=UTF-8");

                        xmlReq.send(data);
     
              } catch(e) {
                   alert(e);
              }
     
        }
     
     
        function ResHandler(){
               if (xmlReq.readystate == 4){
                    
                      alert(xmlReq.responseText);
     
               }
        }
     
     
    </script>
     
     
    在Mozilla浏览器中要用xmlReq = new XMLHttpRequest()来创建HTTP请求对象. 其他使用方法与MSXML相同。基于安全问题,如果open中访问的是另外的域,浏览器通常会禁止这种操作,要跨域访问需修改安全配置。
     
     
    参考文档:
     
    1 - http://msdn.microsoft.com  中MSXML SDK
    一个人成就的大小与承担责任的多少是成正比
  • 相关阅读:
    WPF 使用 Direct2D1 画图 绘制基本图形
    WPF 使用 Direct2D1 画图 绘制基本图形
    dot net core 使用 IPC 进程通信
    dot net core 使用 IPC 进程通信
    win2d 图片水印
    win2d 图片水印
    Java实现 LeetCode 240 搜索二维矩阵 II(二)
    PHP closedir() 函数
    PHP chroot() 函数
    PHP chdir() 函数
  • 原文地址:https://www.cnblogs.com/qxoffice2008/p/3929215.html
Copyright © 2011-2022 走看看