Javascript+xmlhttp调用Webservice(一)。

原文:http://www.cnblogs.com/netboy/archive/2006/02/18/333260.html
1.  创建webservice.
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方法时发送的数据多的原因吗?

posted on 2009-09-14 22:30  博览潇湘  阅读(453)  评论(0编辑  收藏  举报

导航