• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        當(dāng)前位置:雨林木風(fēng)下載站 > 技術(shù)開發(fā)教程 > 詳細(xì)頁面

        運(yùn)用vbscript腳本調(diào)用web服務(wù)

        運(yùn)用vbscript腳本調(diào)用web服務(wù)

        更新時間:2022-05-06 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

        最近碰到的一個問題,需要在asp和客戶端調(diào)用.NET的webservice,也就是說需要用vbscript或javascript來調(diào)用webservice。在網(wǎng)上看了看,大多數(shù)方案都是利用SOAP Toolkit,但是因?yàn)镾OAP Toolkit在今年就會被停止后續(xù)的支持了,并且要使用soapclient需要專門安裝SOAP Toolkit,這對客戶端來說不具有通用性,因此想到了使用xmlhttp,利用xmlhttp來和webservice交互。

        客戶端代碼如下:
        <script language="vbscript">
        Set objHTTP = CreateObject("MSXML2.XMLHTTP")
        Set xmlDOC =CreateObject("MSXML.DOMDocument")
        strWebserviceURL = "http://localhost/possible/Service1.asmx/add"
        '設(shè)置參數(shù)及其值
        strRequest = "x=2&y=3"
        objHTTP.Open "POST", strWebserviceURL, False
        '設(shè)置這個Content-Type很重要
        objHTTP.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"
        objHTTP.Send(strRequest)
        bOK = xmlDOC.load(objHTTP.responseXML)
        '看看狀態(tài)值
        msgBox objHTTP.Status
        msgbox objHTTP.StatusText
        'objHTTP.Status=200,這里就可以處理返回的xml片段了
        '如果需要,可以替換返回的xml字符串當(dāng)中的&lt;和&gt;
        xmlStr = xmlDOC.xml
        xmlStr = Replace(xmlStr,"&lt;","<",1,-1,1)
        xmlStr = Replace(xmlStr,"&gt;",">",1,-1,1)
        msgbox xmlStr
        </script>

        改為服務(wù)器端的asp代碼為:
        <%
        Set objHTTP = Server.CreateObject("MSXML2.XMLHTTP")
        Set xmlDOC =Server.CreateObject("MSXML.DOMDocument")
        strWebserviceURL = "http://localhost/possible/Service1.asmx/add"
        '設(shè)置參數(shù)及其值
        strRequest = "x=2&y=3"
        objHTTP.Open "POST", strWebserviceURL, False
        '設(shè)置這個Content-Type很重要
        objHTTP.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"
        objHTTP.Send(strRequest)
        bOK = xmlDOC.load(objHTTP.responseXML)
        '看看狀態(tài)值
        if objHTTP.Status=200 then
        xmlStr = xmlDOC.xml
        xmlStr = Replace(xmlStr,"&lt;","<",1,-1,1)
        xmlStr = Replace(xmlStr,"&gt;",">",1,-1,1)
        Response.Write xmlStr
        else
        Response.Write objHTTP.Statu&"<br>"
        Response.Write objHTTP.StatusText
        end if
        %>

        以上代碼在本地測試都沒有問題(在部署webservice的本地機(jī)器上測試的),然而把strWebserviceURL = "http://localhost/possible/Service1.asmx/add"改為部署在其他機(jī)器上的webservice時,卻出了問題,結(jié)果一直是返回500錯誤,即objHTTP.Status一直都為500。
        原因在于.Net Framework1.1默認(rèn)不支持HttpGet和HttpPost。如果修改webservice里的web.config增加
        <webServices>
        <protocols>
        <add name="HttpPost"/>
        <add name="HttpGet"/>
        </protocols>
        </webServices>
        后,上代碼就可以調(diào)用遠(yuǎn)程機(jī)器上的webservice了。
        而利用SOAP發(fā)送在默認(rèn)情況下即可得到.Net Framework1.1的支持,因此用構(gòu)造Soap請求的xml字符串給xmlhttp對象來send的方法就對遠(yuǎn)程服務(wù)器的web.config沒有要求了,于是根據(jù)local顯示的例子構(gòu)造了一個soapRequest的string,發(fā)送給了即將部署的遠(yuǎn)程主機(jī),結(jié)果返回了200的status code,并且可以順利取得responseXML.類似代碼如下:

        客戶端代碼如下:
        <script language="vbscript">
        Dim url,xmlhttp,dom,node,xmlDOC
        '根據(jù)webservice的測試頁不同的方法構(gòu)造不同的soap request
        SoapRequest = "<?xml version="&CHR(34)&"1.0"&CHR(34)&" encoding="&CHR(34)&"utf-8"&CHR(34)&"?>"& _
        "<soap:Envelope xmlns:xsi="&CHR(34)&"http://www.w3.org/2001/XMLSchema-instance"&CHR(34)&" "& _
        "xmlns:xsd="&CHR(34)&"http://www.w3.org/2001/XMLSchema"&CHR(34)&" "& _
        "xmlns:soap="&CHR(34)&"http://schemas.xmlsoap.org/soap/envelope/"&CHR(34)&">"& _
        "<soap:Body>"& _
        "<add xmlns="&CHR(34)&"http://localhost"&CHR(34)&">"& _
        "<x>3</x>"& _
        "<y>4</y>"& _
        "</add>"& _
        "</soap:Body>"& _
        "</soap:Envelope>"
        url = "http://www.xxxx.com/Service1.asmx?methodname=Add"
        Set xmlDOC =CreateObject("MSXML.DOMDocument")
        xmlDOC.loadXML(SoapRequest)
        Set xmlhttp = CreateObject("Msxml2.XMLHTTP")
        xmlhttp.Open "POST",url,false
        xmlhttp.setRequestHeader "Content-Type", "text/xml;charset=utf-8"
        'SOAPAction這個Header頭同樣可以在sample中找到
        xmlhttp.setRequestHeader "SOAPAction", "http://localhost/add"
        xmlhttp.setRequestHeader "Content-Length",LEN(SoapRequest)
        xmlhttp.Send(xmlDOC)
        msgbox xmlhttp.Status
        msgbox xmlhttp.StatusText
        msgbox xmlhttp.responseText
        If xmlhttp.Status = 200 Then
        xmlDOC.load(xmlhttp.responseXML)
        msgbox "執(zhí)行結(jié)果為:"&xmlDOC.getElementsByTagName("addResult")(0).text
        else
        msgbox "failed"
        end if
        </script>

        改為服務(wù)器端的asp代碼為:
        <%
        Dim url,xmlhttp,dom,node,xmlDOC
        '根據(jù)webservice的測試頁不同的方法構(gòu)造不同的soap request
        SoapRequest = "<?xml version="&CHR(34)&"1.0"&CHR(34)&" encoding="&CHR(34)&"utf-8"&CHR(34)&"?>"& _
        "<soap:Envelope xmlns:xsi="&CHR(34)&"http://www.w3.org/2001/XMLSchema-instance"&CHR(34)&" "& _
        "xmlns:xsd="&CHR(34)&"http://www.w3.org/2001/XMLSchema"&CHR(34)&" "& _
        "xmlns:soap="&CHR(34)&"http://schemas.xmlsoap.org/soap/envelope/"&CHR(34)&">"& _
        "<soap:Body>"& _
        "<add xmlns="&CHR(34)&"http://localhost"&CHR(34)&">"& _
        "<x>3</x>"& _
        "<y>4</y>"& _
        "</add>"& _
        "</soap:Body>"& _
        "</soap:Envelope>"
        url = "http://www.xxxx.com/Service1.asmx?methodname=Add"
        Set xmlDOC =server.CreateObject("MSXML.DOMDocument")
        xmlDOC.loadXML(SoapRequest)
        Set xmlhttp = server.CreateObject("Msxml2.XMLHTTP")
        xmlhttp.Open "POST",url,false
        xmlhttp.setRequestHeader "Content-Type", "text/xml;charset=utf-8"
        xmlhttp.setRequestHeader "SOAPAction", "http://localhost/add"
        xmlhttp.setRequestHeader "Content-Length",LEN(SoapRequest)
        xmlhttp.Send(xmlDOC)
        If xmlhttp.Status = 200 Then
        xmlDOC.load(xmlhttp.responseXML)
        Response.Write xmlhttp.Status&"<br>"
        Response.Write xmlhttp.StatusText&"<br>執(zhí)行結(jié)果為:"
        Response.Write xmlDOC.getElementsByTagName("addResult")(0).text
        else
        Response.Write xmlhttp.Status&"<br>"
        Response.Write xmlhttp.StatusText
        end if
        %>

        以上用的都是vbscript的,對于javascript基本上都是一樣的,只需要做一些小的改動,具體代碼這里就省略了。

        /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

        附:
        測試時用的webservice文件Service1.asmx的代碼:
        using System;
        using System.Collections;
        using System.ComponentModel;
        using System.Data;
        using System.Diagnostics;
        using System.Web;
        using System.Web.Services;

        namespace possible
        {
        /// <summary>
        /// Service1 的摘要說明。
        /// </summary>
        [WebService(Description="my web service",Name="myService",Namespace="http://localhost")]
        public class myService : System.Web.Services.WebService
        {
        public myService()
        {
        //CODEGEN: 該調(diào)用是 ASP.NET Web 服務(wù)設(shè)計(jì)器所必需的
        InitializeComponent();
        }

        #region 組件設(shè)計(jì)器生成的代碼

        //Web 服務(wù)設(shè)計(jì)器所必需的
        private IContainer components = null;

        /// <summary>
        /// 設(shè)計(jì)器支持所需的方法 - 不要使用代碼編輯器修改
        /// 此方法的內(nèi)容。
        /// </summary>
        private void InitializeComponent()
        {
        }

        /// <summary>
        /// 清理所有正在使用的資源。
        /// </summary>
        protected override void Dispose( bool disposing )
        {
        if(disposing && components != null)
        {
        components.Dispose();
        }
        base.Dispose(disposing);
        }

        #endregion

        [WebMethod(Description="返回兩整數(shù)之和")]
        public int add(int x,int y)
        {
        return x+y;
        }
        }
        }

        溫馨提示:喜歡本站的話,請收藏一下本站!

        本類教程下載

        系統(tǒng)下載排行

        主站蜘蛛池模板: 在线观看www日本免费网站| 一个人免费观看在线视频www| 在线免费观看中文字幕| 亚洲Av高清一区二区三区| 日本最新免费网站| 亚洲一区二区三区播放在线| 真人做人试看60分钟免费视频| 亚洲网站在线播放| 亚洲国产成人AV网站| 女人被男人躁的女爽免费视频| 99999久久久久久亚洲| 操美女视频免费网站| 亚洲欧美不卡高清在线| 免费看国产精品麻豆| 一级毛片免费毛片毛片| 亚洲色欲一区二区三区在线观看| 大地资源在线资源免费观看| 亚洲邪恶天堂影院在线观看| 0588影视手机免费看片| 亚洲av无码专区在线观看亚| 亚洲精品成人在线| 亚洲Aⅴ在线无码播放毛片一线天| 在线观看国产情趣免费视频 | 亚洲综合伊人久久大杳蕉| 国产成人久久AV免费| 亚洲综合国产精品第一页| 成人A片产无码免费视频在线观看 成人电影在线免费观看 | 人妻仑刮八A级毛片免费看| 亚洲欧洲日产国码无码网站| 麻花传媒剧在线mv免费观看| 亚洲日本va一区二区三区| 亚洲五月综合缴情在线观看| 在线视频精品免费| jizz日本免费| 亚洲人成网站在线观看播放动漫| 无码国产精品一区二区免费16| 亚洲乱码在线观看| 亚洲色婷婷综合久久| 色婷婷7777免费视频在线观看| 一个人免费观看www视频| 亚洲免费人成视频观看|