利用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
PocketSOAP
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