zoukankan      html  css  js  c++  java
  • javascript + xmlhttp 调用webservice 吃力不讨好

    1.  创建webservice,为了免于落俗我稍稍修改了创建webserice的默认webmethod。^_^
    using System;
    using System.Web;
    using System.Web.Services;
    using System.Web.Services.Protocols;

    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    public class Service : System.Web.Services.WebService
    {
        public Service () {

            //Uncomment the following line if using designed components
            //InitializeComponent();
        }

        [WebMethod]
        public string SayHelloTo(string Name) {
            return "Hello "+Name;
        }
       
    }
    还是俗了点。:)

    2. js调用webservice+xmlhttp的实现部分。

    <html>
    <title>
    Call webservice with javascript and xmlhttp.
    </title>
    <body>
    <script language="javascript">

    //Test function with get method.
    function RequestByGet(data){

    var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    //Webservice location.
    var URL="http://localhost:1323/WebSite6/Service.asmx/SayHelloTo?Name=Zach";
    xmlhttp.Open("GET",URL, false);
    xmlhttp.SetRequestHeader ("Content-Type","text/xml; charset=utf-8");
    xmlhttp.SetRequestHeader ("SOAPAction","http://tempuri.org/SayHelloTo");
    xmlhttp.Send(data);
    var result = xmlhttp.status;
    //OK
    if(result==200) {
    document.write(xmlhttp.responseText);
    }
    xmlhttp = null;
    }

    //Test function with post method
    function RequestByPost(value)
    {
    var data;
    data = '<?xml version="1.0" encoding="utf-8"?>';
    data = data + '<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">';
    data = data + '<soap:Body>';
    data = data + '<SayHelloTo xmlns="http://tempuri.org/">';
    data = data + '<Name>'+value+'</Name>';
    data = data + '</SayHelloTo>';
    data = data + '</soap:Body>';
    data = data + '</soap:Envelope>';

    var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    var URL="http://localhost:1323/WebSite6/Service.asmx";
    xmlhttp.Open("POST",URL, false);
    xmlhttp.SetRequestHeader ("Content-Type","text/xml; charset=gb2312");
    xmlhttp.SetRequestHeader ("SOAPAction","http://tempuri.org/SayHelloTo");
    xmlhttp.Send(data);
    document.write( xmlhttp.responseText);

    }

    </Script>

    <input type="button" value="CallWebserviceByGet" onClick="RequestByGet(null)">
    <input type="button" value="CallWebserviceByPost" onClick="RequestByPost('Zach')">

    </body>
    </html>
    对于使用post方法需要发送的那堆东东可以在webservice的测试页面中找到,自己拼凑加上对应的参数就可以。

    我发现用post方法的时候响应很慢,是因为用Post方法时发送的数据多的原因吗?

  • 相关阅读:
    第六周例行报告
    第五周每周例行报告
    第三、四周例行报告
    PSP总结报告
    获奖感言
    20181204-1 每周例行报告
    20181127-2 每周例行报告
    软件工程原则的应用实例分析
    20181120-1 每周例行报告
    20181113-2 每周例行报告
  • 原文地址:https://www.cnblogs.com/happyday56/p/772502.html
Copyright © 2011-2022 走看看