Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > .NET > C#.NET > XMLHTTP开发Web 客户端
【标  题】:XMLHTTP开发Web 客户端
【关键字】:XMLHTTP,Web
【来  源】:http://blog.csdn.net/dtdn/archive/2006/04/25/676139.aspx

XMLHTTP开发Web 客户端

Your Ad Here

  关键字: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数据格式,可以说就是你自己定义的协议了,以上只不过是抛砖引玉而已。努力,一切在你自己。

长度换算:【上一篇】
Google.com与Google.cn 阉割前后:【下一篇】
【相关文章】
  • 在Weblogic Portal里加入Struts的应用程序主要步骤
  • 使用XMLHTTP Request Object获取服务器数据
  • 4月23日-----总结:读完《用于实现 Web 服务的 SOA 编程模型》系列7篇文章
  • WEBLOGIC FOR Windows 安装的Flash
  • 使用Apache Axis部署 Web服务时的常见问题及其解决方法
  • 应用AXIS开始Web 服务之旅
  • [webservices开发]XFire Web服务的单元测试
  • [webservices开发]集成Spring
  • [webservices开发]XFire在SpringSide中的应用
  • 如何给webwork的action里的Field设置初始值(续)
  • 【随机文章】
  • C#基础全接触
  • 原来bindprocessor是这样用的
  • 可替代VB自带的Timer控件的Timer类
  • Painter 实例教程-写实人物绘画(6)
  • 避免使用DSN连接数据库
  • 在线参考文档
  • 利用正则表达式把用URLEncode的字符串转换成正常的字符串函数
  • 格式化 DataGrid 输出
  • SUN工作站在网络中的深入应用:将SOLARIS设置成PPP拨入服务器
  • 李开复给程序员的七个建议
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.