[WebService (Description ="temperature service", Namespace ="http://aaa/webapplication1/webservices")][WebMethod]
  public double tocelsius(double tf)
  {
    return (5d/9d)*(tf-32);
  }[WebMethod]
  public double tofahrenheit(double tc)
  {
    return (9d/5d)*(tc+32);
  }
这是我写的一个xml web服务我现在想问
怎么在写一个页面(a.htm)去调用这个xml web服务(用soap,http-post我知道)

解决方案 »

  1.   

    用Javascript 的ActiveXObject来访问.要自己写XML代码详见:http://blog.csdn.net/hjf1223/archive/2005/03/07/313551.aspx    var userID = "3011";
        var myService   = "http://192.168.7.108/WebService/NewsService.asmx" ;
        var myMethod    = "http://tempuri.org/HasNewMessage";
        var requestHttp = new ActiveXObject("Microsoft.XMLHTTP");
        var requestBody = "";
        requestBody     = requestBody + "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" ;    requestBody     = requestBody + "<soap:Envelope ";
        requestBody     = requestBody + "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" ";
        requestBody     = requestBody + "xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" " ;
        requestBody     = requestBody + "xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\n" ;    requestBody     = requestBody + " <soap:Body>\n" ;
        requestBody     = requestBody + "   <HasNewMessage xmlns=\"http://tempuri.org/\">\n" ;
        requestBody     = requestBody + "    <userID>" + userID + "</userID>\n";
        requestBody     = requestBody + "  </HasNewMessage>\n";
        requestBody     = requestBody + " </soap:Body>\n";
        requestBody     = requestBody + "</soap:Envelope>";
        requestHttp.Open("POST",myService,false);
        requestHttp.SetRequestHeader("Content-Type","text/xml;charset=gb2312");
        requestHttp.SetRequestHeader("SOAPAction",myMethod);
      requestHttp.Send(requestBody);// 发送请求
        var result = requestHttp.ResponseXML;  //返回请求,结果保存在XML中,要拆解出来 
        var pos1 = result .xml.indexOf("<HasNewMessageResult>");      var pos2 = result .xml.indexOf("</HasNewMessageResult>");
        var len = pos2 - pos1 - ("<HasNewMessageResult>").length;     var userName = result.xml.substr(pos1 + ("<HasNewMessageResult>").length , len);  
        pos1    = result.xml.indexOf("<mailCount>");    pos2    = result.xml.indexOf("</mailCount>");
        len     = pos2 - pos1 - ("<mailCount>").length;    var mailCount = result.xml.substr(pos1 + ("<mailCount>").length , len);    pos1    = result.xml.indexOf("<pendingCount>");    pos2    = result.xml.indexOf("</pendingCount>");    len     = pos2 - pos1 - ("<pendingCount>").length;    var pendingCount= result.xml.substr(pos1 + ("<pendingCount>").length , len);
      

  2.   

    http-post
    是用一个htm表单来实现的
    soap要这么复杂啊?
      

  3.   

    参考下面的代码 http://ms.mblogger.cn/xuzhong/posts/16578.aspx演示调用你的tocelsius方法var objHTTP = new ActiveXObject("MSXML2.XMLHTTP");
    var xmlDOC = new ActiveXObject("MSXML.DOMDocument");var strWebserviceURL = "http://localhost/testss/Service1.asmx/tocelsius";var strRequest = "tf=111";
    objHTTP.Open( "POST", strWebserviceURL, false);
    objHTTP.SetRequestHeader( "Content-Type", "application/x-www-form-urlencoded");
    objHTTP.Send(strRequest);var bOK = xmlDOC.load(objHTTP.responseXML);if(objHTTP.Status==200)
    {
        xmlDOC.save("c:\\aaa.xml");
    }不过,象这样的方法,在ASP,VB中也一样是可用的。