zoukankan      html  css  js  c++  java
  • Javascript+xmlhttp调用Webservice以及注意事项

     1 如何处理: 请求格式无法识别 这种调用过程的错误?
     2  -----------注意vs.net写wevservie供调用的时------
     3 <webServices> 
     4 <protocols> 
     5 <add name="HttpPost" /> 
     6 <add name="HttpGet" /> 
     7 </protocols> 
     8 </webServices> 
     9 把这个复制到你项目里的web.config里的<system.web>节点下面应该就可以了
    10 
    11 下面是具体调用过程:
    12 
    13 
    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方法时发送的数据多的原因吗?

  • 相关阅读:
    初识React
    前端跨页面传值 cookie,sessionStorage,url传参
    commonJS 和 es6规范 的引入导出(摘自简书sf)
    Vue2.x 添加element UI 组件
    python3 基础1
    webapck 插件HtmlWebpackPlugin的使用以及webpack 热更新;
    ES6 基础(set数据结构和map数据结构)
    ansible批量部署模块(二)
    ansible批量部署(一)
    ssh远程管理
  • 原文地址:https://www.cnblogs.com/msn/p/888718.html
Copyright © 2011-2022 走看看