DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> AJAX入門 >> AJAX詳解 >> XMLHTTP開發Web 客戶端
XMLHTTP開發Web 客戶端
編輯:AJAX詳解     
 關鍵字: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-->

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved