XMLHTTP开发Web 客户端

web|xml|客户端

  关键字:XMLHTTP,XML,Web客户端,C#,ASP

  所有的知识都不是最新的知识点,关键是达到自己的设计目的。

  某些时候,我们可能需要客户端做点什么以简化复杂的脚本处理,比如加密之类的等。

  不管用什么样的客户端,首先我们应该确定我们遵守的协议,或者说如何设置或获取我的数据。这里,我们的服务器端为IIS5的ASP程序,所以我们首先遵守的是HTTP协议,然后在HTTP协议上传输XML。用XML是因为更容易统一我们的数据格式,有XML这种思想我们为什么不用呢。

  恰好XMLHTTP,就是基于HTTP传输XML的很方便的类。

  首先简要说一下XMLHTTP的两个函数:

  open(bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword)

  按照bstrMethod指定的HTTP方法(如POST,GET等)打开bstrUrl指定的连接,其中varAsync为是否异步,bstrUser, bstrPassword为访问bstrUrl时需要用户及密码。

  send(varBody)

  发送的数据,或者应该说是提交的数据。

   具体可以查看相关的MSXML SDK。

   以下利用C#实现XML的传输,假定反馈的XML格式为"<RESPONSE><ERROR ID=\"0\">成功</ERROR></RESPONSE>"

private MSXML2.DOMDocument40Class zXml;   // 处理服务器反馈结果
private int zLastErrorCode;

private string zLastErrorDescription;

private const int OkSuccess=0;

//以Err打头的都是一些常量

private int ExecuteCmd(string sCmd, string method, string ext)

{

    //根据sCmd计算出sURL的代码省略。

  //……

 try
      {
        //MessageBox.Show(sURL);
        zXmlHttp.open(method, sURL, false,"","");
        zXmlHttp.send(ext);
      }
      finally
      {
        // 检测设置最后的错误代码和描述

        // 检查zXmlHttp的状态
        if(zXmlHttp.status / 100 ==2)   //200, 201, 202, 203, 204, 205, 206
        {
          // 成功
          //MessageBox.Show(zXmlHttp.responseText);
          zXml.loadXML(zXmlHttp.responseText);
         
          if(zXml.parseError.errorCode!=0)
          {
            zLastErrorCode = ErrProtocol;
            //zLastErrorDescription = "解析服务器反馈结果时出现错误,协议版本可能不正确";
            zLastErrorDescription = zXml.parseError.reason;   //本行应该仅作调试时使用,发布时应该使用上一行
            // MessageBox.Show(zXmlHttp.responseText);
          }
          else
          {
            s = GetXmlNodeValue(zXml,"/RESPONSE/ERROR/@ID");

            if(s.Length==0)
            {
              zLastErrorCode = OkSuccess;
            }
            else
            {
              try
              {
                zLastErrorCode = Convert.ToInt32(s);
              }
              catch
              {
                zLastErrorCode = ErrUnknown;
              }
            }

            zLastErrorDescription = GetXmlNodeValue(zXml, "/RESPONSE/ERROR");
            if(zLastErrorDescription.Length==0)
            {
              if(zLastErrorCode==OkSuccess)
              {
                zLastErrorDescription = "执行成功";
              }
              else
              {
                zLastErrorDescription = "未知错误信息";
              }
            }
          }
        }
        else
        {
          // 服务器出错
          zLastErrorCode = ErrService;
          zLastErrorDescription = zXmlHttp.statusText;
        }
      }

  return zLastErrorCode;
}

  然后是服务器端的Test.asp

<% LANGUAGE=VBSCRIPT %>

<%

Dim oXml

Set oXml = Server.CreateObject("Msxml2.DOMDocument.4.0")
oXml.async = False
oXml.resolveExternals = False

 oXml.load Request

'然后对提交的XML数据进行处理

Set oXml = Nothing

'最后是反馈处理结果
Response.ContentType = "text/xml"   '由于反馈的是XML不可缺!!
Response.CharSet= "gb2312"   '反馈的内容的编码,不可缺!!否则会出现非法字符不能被客户端解析Response.Write "<?xml version=""1.0"" encoding=""gb2312"" ?>" & vbCrlf
Response.Write "<RESPONSE><VERSION>1.0.0.0</VERSION><TEST>中国人民万岁</TEST></RESPONSE>" & vbCrlf
%>

  最后要说的是传输的XML数据格式,可以说就是你自己定义的协议了,以上只不过是抛砖引玉而已。努力,一切在你自己。" & vbCrlfResponse.Write "1.0.0.0中国人民万岁" & vbCrlf-->" & vbCrlfResponse.Write "1.0.0.0中国人民万岁" & vbCrlf-->" & vbCrlfResponse.Write "1.0.0.0中国人民万岁" & vbCrlf-->" & vbCrlfResponse.Write "1.0.0.0中国人民万岁" & vbCrlf-->

时间: 2023-01-01

XMLHTTP开发Web 客户端的相关文章

ubuntu下安装 gSOAP 用于C/C++开发web service服务端与客户端

昨天在ubuntu下进行安装gSOAP,费了很多时间,没成功,今天又来找了大量教程资料,终于一次成功,这里写下自己的安装步骤和方法,供大家参考. 首先下载gsoap,我下载的是gsoap-2.8.1.zip 用unzip gsoap-2.8.1.zip命令解压缩,会解压生成gsoap-2.8文件夹. cd gsoap-2.8   在安装之前需要先安装一些编译工具.     安装编译工具: $sudo apt-get install build-essential 为了成功编译gSOAP,您需要安

如何使用Ajax技术开发Web应用程序(3)

ajax|web|程序 在这个关于AJAX系列的第三部分中(相关文章:第一部分.第二部分),我们将学习如何使用AJAX与服务端进行写作以及这些技术如何产生强大的web应用程序.如果你对学习如何构建类似GMail或者Google Maps的web程序感兴趣的话,这是一篇基础的入门(虽然那两个东东会比我们在这篇文章中提及的内容复杂的多).在这篇文章中,我使用PHP作为服务端语言,但AJAX能够和任何服务端语言进行很好的兼容,所以你尽可以选择你所钟爱的任何语言! 我们还是从我们上一篇文章的代码(喏,就

如何使用Ajax技术开发Web应用程序(2)

ajax|web|程序 在上一篇文章中,我们讨论了如何通过javascript从一个远程XML文件中取得数据.在这篇文章中,我们将学会怎样对数据作更复杂的处理.作为一个示例,我们会准备一组XML数据,将数据分割成独立的片断并以不同的方式展示这些片断(取决于它们是如何被标识的). 这篇文章是建立在上一篇文章中构造的示例代码的基础之上,所以如果你不能理解我们现在的代码,你可以回过头去读第一篇文章(sheneyan注:就在上面). 开始- 让我们开始我们的第一步:构造XML.我们准备写一个XML文档,

如何使用Ajax技术开发Web应用程序

ajax|web|程序 在上一篇文章中,我们讨论了如何通过javascript从一个远程XML文件中取得数据.在这篇文章中,我们将学会怎样对数据作更复杂的处理.作为一个示例,我们会准备一组XML数据,将数据分割成独立的片断并以不同的方式展示这些片断(取决于它们是如何被标识的). 这篇文章是建立在上一篇文章中构造的示例代码的基础之上,所以如果你不能理解我们现在的代码,你可以回过头去读第一篇文章(sheneyan注:就在上面). 开始- 让我们开始我们的第一步:构造XML.我们准备写一个XML文档,

如何使用ajax开发web应用程序

ajax|web|程序 作者: Jonathan Fenocchi时间:2005.10.25译者:Sheneyan英文原文:http://webreference.com/programming/javascript/jf/column12/index.html 在过去,由于为了获得新数据而不得不重新加载web页面(或者加载其他页面)导致web应用程序发展被限制.虽然有其他方法可用(不加载其他页面),但是这些技术都没有被很好地支持而且有bug成灾的趋向.在过去的几个月里,一个过去并不被广泛支持的

如何使用Ajax技术开发Web应用程序(1)

在过去,由于为了获得新数据而不得不重新加载web页面(或者加载其他页面)导致web应用程序发展被限制.虽然有其他方法可用(不加载其他页面),但是这些技术都没有被很好地支持而且有bug成灾的趋向.在过去的几个月里,一个过去并不被广泛支持的技术已经被越来越多的web冲浪者(web surfers??是指浏览器还是浏览者?)所接受,它给了开发者更多的自由开发先进的web应用程序.这些通过javascript来异步取得xml数据的应用程序,被亲切的称为"Ajax应用程序"(Asynchrono

如何使用Ajax技术开发Web应用程序(1)

在过去,由于为了获得新数据而不得不重新加载web页面(或者加载其他页面)导致web应用程序发展被限制.虽然有其他方法可用(不加载其他页面),但是这些技术都没有被很好地支持而且有bug成灾的趋向.在过去的几个月里,一个过去并不被广泛支持的技术已经被越来越多的web冲浪者(web surfers??是指浏览器还是浏览者?)所接受,它给了开发者更多的自由开发先进的web应用程序.这些通过javascript来异步取得xml数据的应用程序,被亲切的称为"Ajax应用程序"(Asynchrono

如何使用ajax开发web应用程序第1/2页_AJAX相关

作者: Jonathan Fenocchi时间:2005.10.25译者:Sheneyan英文原文:http://webreference.com/programming/javascript/jf/column12/index.html 在过去,由于为了获得新数据而不得不重新加载web页面(或者加载其他页面)导致web应用程序发展被限制.虽然有其他方法可用(不加载其他页面),但是这些技术都没有被很好地支持而且有bug成灾的趋向.在过去的几个月里,一个过去并不被广泛支持的技术已经被越来越多的we

如何使用ajax开发web应用程序第1/2页

作者: Jonathan Fenocchi时间:2005.10.25译者:Sheneyan英文原文:http://webreference.com/programming/javascript/jf/column12/index.html 在过去,由于为了获得新数据而不得不重新加载web页面(或者加载其他页面)导致web应用程序发展被限制.虽然有其他方法可用(不加载其他页面),但是这些技术都没有被很好地支持而且有bug成灾的趋向.在过去的几个月里,一个过去并不被广泛支持的技术已经被越来越多的we