• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
Welcome to Leon's Blog
博客园    首页    新随笔    联系   管理    订阅  订阅

客户端调用Web服务

用JS,代码如下:
 function btn_click (a, b)
        {
                var xmlObj = new ActiveXObject("Msxml2.DOMDocument") ;
                var sXml  = "<?xml version=\"1.0\" ?>" ;
                      sXml += "<soap:Envelope "
                      sXml += "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " ;
                      sXml += "xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" " ;
                      sXml += "xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">" ;
                      sXml += "<soap:Body>" ;
                      sXml += "<Add xmlns=\"http://tempuri.org/\">" ;
                      sXml = sXml + "<a>" + a.value  + "</a>" ;
                      sXml = sXml + "<b>" + b.value  + "</b>" ;                     
                      sXml += "</Add></soap:Body></soap:Envelope>"
               
                xmlObj.loadXML(sXml) ;
               
                XmlRequest.innerText =  xmlObj.xml  ;
               
                var xmlHTTP = new ActiveXObject("Msxml2.XMLHTTP") ;
                xmlHTTP.Open ( "Post", "http://localhost/WebService/MyWebService.asmx", false) ;
                xmlHTTP.setRequestHeader("SOAPAction", "http://tempuri.org/Add") ;
                xmlHTTP.setRequestHeader("Content-Type", "text/xml; charset=utf-8" ) ;
                xmlHTTP.Send(xmlObj.xml) ;
                MyResult.innerText =  xmlHTTP.responseText ;
               
                var xmlResponse = xmlHTTP.responseXML ;
                answer.innerText = xmlResponse.selectSingleNode("soap:Envelope/soap:Body/AddResponse/AddResult").text ;
        }

</script>


<form>
        <p>Please input a:<input id="a" name="a"></input></p>
        <p>Please input b:<input id="b" name="b"></input></p>
        <p>
        <input type="button" id="btn"  value="Enter"
                onclick="jscript:btn_click(a, b)"></input>
        </p>
        <p>Answer is <span id="answer"></span></p>
        <hr></hr>
        <p>Request:</p>
        <span id="XmlRequest"></span>
        <p>Response:</p>       
        <span id="MyResult"></span>
       
</form>

</body>
</html>

用c#程序调用:
using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
using System.Xml;
using Microsoft.Web.Services3.Messaging;
using Microsoft.Web.Services3;
namespace SOAP
{
    class MathClient : SoapClient
    {
        public MathClient(Uri destination) : base(destination)
            //: base(destination)
        {
        }

        private SoapEnvelope CreateMessage(string op, int a, int b)
        {
            SoapEnvelope envelope = new SoapEnvelope();
            envelope.CreateBody();
            envelope.Body.InnerXml = string.Format(
                @"<{0} xmlns = 'http://tempuri.org/'>
                    <a>{1}</a>
                    <b>{2}</b>
                </{0}>", op, a, b);
            return envelope;
        }

        [SoapMethod("http://tempuri.org/Add")]
        public int Add(int a, int b)
        {
            try
            {
                SoapEnvelope sendEnvelope = CreateMessage("Add", a, b);

                SoapEnvelope receiveEnvelope = base.SendRequestResponse("Add", sendEnvelope);
                int x = XmlConvert.ToInt32(receiveEnvelope.InnerText);
                return x;
            }
            catch (System.Exception ex)
            {
                Console.WriteLine(ex.Message);
                return -1;
            }
        }
    }
}
 class Program
    {
        static void Main(string[] args)
        {
            MathClient mathiClient = new MathClient(new Uri("http://localhost/WebService/MyWebService.asmx"));
            int a = mathiClient.Add(2, 10);
            Console.WriteLine(a);
        }
    }

posted @ 2008-01-13 20:44  Leon916  阅读(301)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3