• 客户端调用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);
            }
        }

  • 相关阅读:
    memmove、memccpy和memcpy
    NSLocalizedString不起作用
    sign starfieldtech
    微软推荐的Get a code signing certificate流程和链接
    Driver Signing changes in Windows 10
    delphi 打开文件夹并定位到一个文件(关键是/select参数)
    key转成pvf
    nginx+apache+mysql+php+memcache+squid搭建集群web环境
    dddd
    Delphi系统变量:IsMultiThread对MM的影响
  • 原文地址:https://www.cnblogs.com/leon916/p/1037298.html
Copyright © 2020-2023  润新知