利用PocketSOAP链接webservice(1)---.net
发表于:2007-06-30来源:作者:点击数:
标签:
Pocket SOA P This is a SOAP client COM component for the Windows family, originally targeted at PocketPC (hence the name), there is also a Win32 version that works on Windows 95/98/Me/NT4/2000/ XP . The package includes a HTTP transport for
Pocket
SOAP
This is a SOAP client COM component for the Windows family, originally targeted at PocketPC (hence the name), there is also a Win32 version that works on Windows 95/98/Me/NT4/2000/
XP. The package includes a HTTP transport for making HTTP based SOAP requests, however the transport is separate from the main SOAP core, so any other transports can be easily added. James Clark@#s excellent Expat XML Parser is used for parsing the response SOAP messages.
如果你想执行文章中给出了代码你需要并安装pocketsoap
至于如何建立webservice我就不费力气讲了,今天的主要目的是如何利用pocketsoap使一些事情变得简单。
1.在.net中使用PocketSOAP
如果在安装PocketSoap的过程中是根据系统默认选项的话那么在“c:\program files\simonfell\pocketSOAP1.2\”中你就会发现psoap32.dll文件
我们需要导入这个PocketSOAP NAMESPACE
例如:
using PocketSOAP;using System;public class test{ public static void Main(string[] args) { Console.WriteLine("Starting C# PocketSOAP for echoString"); CoEnvelope soap=new CoEnvelope(); HTTPTransport h=new HTTPTransport(); soap.MethodName="echoString"; soap.URI="urn:xmethodsInterop"; soap.Parameters.Create("inputString", "Hello World", "", null, null); h.SOAPAction = "" ; h.Send ( ", soap.Serialize() ); soap.Parse(h, null); Console.WriteLine(soap.Parameters.get_Item(0).Value); }}编译的时候加入PocketSOAP.dll
csc test.cs /r:pocketSOAP.dll
例子2:using PocketSOAP;using System;public class test{ public static void Main(string[] args) { Console.WriteLine("Starting C# PocketSOAP for echoStringArray"); CoEnvelope soap = new CoEnvelope(); HTTPTransport h = new HTTPTransport(); soap.MethodName = "echoStringArray"; soap.URI = "http://soapinterop.org/"; Object[] sa = new Object[2]; sa[0] = "hello"; sa[1] = "goodbye"; soap.Parameters.Create ( "inputStringArray", sa, "", null,null ) ; Console.WriteLine("Encoding style: "+soap.EncodingStyle); Console.WriteLine("Method Name : "+soap.MethodName); Console.WriteLine("URI : "+soap.URI); Console.WriteLine(soap.Serialize()); h.SOAPAction = "http://soapinterop.org/" ; h.Send("http://www.whitemesa.net/interop/std", soap.Serialize()); soap.Parse(h, null); object[] res = (object[])soap.Parameters.get_Item(0).Value; Console.WriteLine(res[0]); Console.WriteLine(res[1]); }}例子3:using System;using System.Collections;using PocketSOAP; public class XMListings{ public static void Main() { CoEnvelope soap=new CoEnvelope(); HTTPTransport h=new HTTPTransport(); h.SOAPAction=""; soap.MethodName="getAllSOAPServices"; soap.URI="urn:xmethodsServicesManager"; h.Send("http://www.xmethods.net/soap/servlet/rpcrouter", soap.Serialize()); soap.Parse(h, null); Object[] u = (object[])soap.Parameters.get_Item(0).Value; foreach (ISOAPNode x in u) { Console.WriteLine(x.Nodes.get_ItemByName("name","").Value); Console.WriteLine(x.Nodes.get_ItemByName("owner","").Value); Console.WriteLine(x.Nodes.get_ItemByName("serverImplementation","").Value); Console.WriteLine("-------------------------------"); } return; }}
原文转自:http://www.ltesting.net