http://community.csdn.net/Expert/topic/3797/3797112.xml?temp=.3394129http://www.gbnis.com/read_file.php?id=2069&left=net_programe参考一下//****服务器端******* Service1.asmx里包含下面两个WEBMETHOD [WebMethod] public DataSet GetMyProductsDataSet(int userID)//被调用时将返回DATASET序列的XML,此XML主要用于ADO.NET { string sql; DataSet ds2=new DataSet(); sql = "select userid,productname from StockIC where UserID="+userID; my_adapter = new SqlDataAdapter(sql,this.sqlConnection1); my_adapter.Fill(ds2,"Stock"); return ds2; }[WebMethod] //被调用时将返回ADO.Recodset序列的XML public System.Xml.XmlDocument GetMyProductsRecordSet(int userID),此XML主要用于ADO { string sql; ADODB.Recordset rs=new ADODB.Recordset(); ADODB.Stream st=new ADODB.Stream(); System.Xml.XmlDocument xd=new System.Xml.XmlDocument(); sql = "select userid,productname from StockIC where UserID="+userID; rs.Open(sql,this.sqlConnection3,ADODB.CursorTypeEnum.adOpenForwardOnly,ADODB.LockTypeEnum.adLockReadOnly, 1); rs.Save(st,ADODB.PersistFormatEnum.adPersistXML); st.Flush(); st.Position=0; xd.LoadXml(st.ReadText(st.Size)); return xd; }'****客户端******* 'XMLHTTP调用并装载到ADO.RECORDSET分析(简单方便),可以直接由XMLDOM来分析Set objHTTP = Server.CreateObject("MSXML2.XMLHTTP.4.0") Set objXmlDoc =Server.CreateObject("MSXML2.DOMDocument.3.0") strWebserviceURL = "http://192.168.1.88/Service1.asmx/GetMyProductsRecordSet" strRequest = "userID=43" objHTTP.Open "post", strWebserviceURL, False objHTTP.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded" objHTTP.Send(strRequest) objXmlDoc.load objHTTP.responseXML set rs=server.CreateObject("adodb.recordset") rs.Open objXmlDoc'必须是ADO.Recodset序列的XML,如果上面http://192.168.1.88/Service1.asmx调用的方法GetMyProductsRecordSet改成GetMyProductsDataSet将报错 if rs is nothing then response.Write "rsisnothing" if rs.EOF then response.Write "rs.EOF" else while not rs.EOF response.Write rs(0) & "<br/>" rs.MoveNext wend end if set objXmlHttp=nothing set objXmlDoc=nothing set rs=nothing
在VB中测试 这个就要相对来说复杂一些 首先在vb中建立一个”标准EXE”的工程。添加引用:Microsoft Soap Type library。注意:如果没有安装Microsoft Soap Toolkit,是没有这个类型库的。 可以在http://www.ourfly.com中下载。 添加一个text Private Sub Form_Load() Text1.Text = add() End Sub Public Function Add() As String Dim objSoapClient As New SoapClient objSoapClient.ClientProperty("ServerHTTPRequest") = True Call objSoapClient.mssoapinit("http://localhost/webserver/service1.asmx?WSDL", "Service1", "Service1Soap") 这句也可以 objSoapClient.mssoapinit("http://localhost/webserver/service1.asmx?WSDL") Add = objSoapClient.Show("龙卷风.NET") End Function 调试成功需要注意的: 运行服务端webservice的程序,出现下面时 支持下列操作。有关正式定义,请查看服务说明。 点击服务说明,会得到完整的wsdl文件 http://localhost/webserver/Service1.asmx?WSDL 我们就要使用这个文件,其中包含了我们定义的方法等等。 Mssoapinit(bstrWSDLFile as string,[bStrServiceName as string ],[bStrport as string ] ,[bstrWSMLDile as string])的用法: 其中第二个,第三个参数在wsdl文件中可以找到。也可以省略。
dim ohttp as new MSXML2.XMLHTTP
...
具体做法可以参见:http://builder.com.com/5100-6389-1050036.html
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndotnet/html/migrsoapwebserv.asp
Service1.asmx里包含下面两个WEBMETHOD
[WebMethod]
public DataSet GetMyProductsDataSet(int userID)//被调用时将返回DATASET序列的XML,此XML主要用于ADO.NET
{
string sql;
DataSet ds2=new DataSet();
sql = "select userid,productname from StockIC where UserID="+userID;
my_adapter = new SqlDataAdapter(sql,this.sqlConnection1);
my_adapter.Fill(ds2,"Stock");
return ds2;
}[WebMethod]
//被调用时将返回ADO.Recodset序列的XML
public System.Xml.XmlDocument GetMyProductsRecordSet(int userID),此XML主要用于ADO
{
string sql;
ADODB.Recordset rs=new ADODB.Recordset();
ADODB.Stream st=new ADODB.Stream();
System.Xml.XmlDocument xd=new System.Xml.XmlDocument();
sql = "select userid,productname from StockIC where UserID="+userID;
rs.Open(sql,this.sqlConnection3,ADODB.CursorTypeEnum.adOpenForwardOnly,ADODB.LockTypeEnum.adLockReadOnly, 1);
rs.Save(st,ADODB.PersistFormatEnum.adPersistXML);
st.Flush();
st.Position=0;
xd.LoadXml(st.ReadText(st.Size));
return xd;
}'****客户端*******
'XMLHTTP调用并装载到ADO.RECORDSET分析(简单方便),可以直接由XMLDOM来分析Set objHTTP = Server.CreateObject("MSXML2.XMLHTTP.4.0")
Set objXmlDoc =Server.CreateObject("MSXML2.DOMDocument.3.0")
strWebserviceURL = "http://192.168.1.88/Service1.asmx/GetMyProductsRecordSet"
strRequest = "userID=43"
objHTTP.Open "post", strWebserviceURL, False
objHTTP.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"
objHTTP.Send(strRequest)
objXmlDoc.load objHTTP.responseXML
set rs=server.CreateObject("adodb.recordset")
rs.Open objXmlDoc'必须是ADO.Recodset序列的XML,如果上面http://192.168.1.88/Service1.asmx调用的方法GetMyProductsRecordSet改成GetMyProductsDataSet将报错
if rs is nothing then response.Write "rsisnothing"
if rs.EOF then
response.Write "rs.EOF"
else
while not rs.EOF
response.Write rs(0) & "<br/>"
rs.MoveNext
wend
end if
set objXmlHttp=nothing
set objXmlDoc=nothing
set rs=nothing
这个就要相对来说复杂一些
首先在vb中建立一个”标准EXE”的工程。添加引用:Microsoft Soap Type library。注意:如果没有安装Microsoft Soap Toolkit,是没有这个类型库的。
可以在http://www.ourfly.com中下载。
添加一个text
Private Sub Form_Load()
Text1.Text = add()
End Sub Public Function Add() As String
Dim objSoapClient As New SoapClient
objSoapClient.ClientProperty("ServerHTTPRequest") = True
Call objSoapClient.mssoapinit("http://localhost/webserver/service1.asmx?WSDL", "Service1", "Service1Soap")
这句也可以
objSoapClient.mssoapinit("http://localhost/webserver/service1.asmx?WSDL") Add = objSoapClient.Show("龙卷风.NET")
End Function 调试成功需要注意的:
运行服务端webservice的程序,出现下面时
支持下列操作。有关正式定义,请查看服务说明。
点击服务说明,会得到完整的wsdl文件
http://localhost/webserver/Service1.asmx?WSDL
我们就要使用这个文件,其中包含了我们定义的方法等等。 Mssoapinit(bstrWSDLFile as string,[bStrServiceName as string ],[bStrport as string ] ,[bstrWSMLDile as string])的用法:
其中第二个,第三个参数在wsdl文件中可以找到。也可以省略。