• 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方法时发送的数据多的原因吗?

  • 相关阅读:
    总结的反爬虫手段(持续更新)
    爬虫类编程笔记导航
    技术开发流程小公司
    敏捷开发学习笔记(一)
    .NET Framework各版本比较
    linux shell 之 cut
    Hive insert overwrite 出现错误解决方法
    hive join
    linux shell 之 grep
    hive实现not in
  • 原文地址:https://www.cnblogs.com/happyday56/p/772502.html
Copyright © 2020-2023  润新知