【IT168技术文档】
下面就是在Internet Exploerer里直接调用这两个Web Method所得到的XML格式的结果:
表5. GetPersons()的返回结果
表6. GetPersonTable()的返回的String类型的值<?xml version="1.0" encoding="utf-8"?> <ArrayOfPerson xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://tempuri.org/"> <Person> <Name>Alice</Name> <Gender>Female</Gender> </Person> <Person> <Name>Bob</Name> <Gender>Male</Gender> </Person> <Person> <Name>Chris</Name> <Gender>Female</Gender> </Person> <Person> <Name>Dennis</Name> <Gender>Male</Gender> </Person> </ArrayOfPerson>
到这里,XML Web Service的创建就已经完成了。.NET中创建的XML Web Services遵循的是统一的行业标准(SOAP、XML等),因此无论使用.NET语言还是使用非.NET语言,都可以调用它。尤其对于GetPersonTable()返回的结果来说,只要用XML Parser作简单的处理,就能把数据提取出来。下面就将演示如何在Java中完成这一处理。<PersonTable> <Person> <Name>Alice</Name> <Gender>Female</Gender> </Person> <Person> <Name>Bob</Name> <Gender>Male</Gender> </Person> <Person> <Name>Chris</Name> <Gender>Female</Gender> </Person> <Person> <Name>Dennis</Name> <Gender>Male</Gender> </Person> <Person> <Name>Eric</Name> <Gender>Male</Gender> </Person> </PersonTable>
3. 在Java中调用.NET Web Services,处理返回的数据集合
编写客户端调用Web Services时,最快速简便做法的是利用工具根据Web Services的WSDL描述生成客户端代理类(Proxy),而不是直接对SOAP Toolkit进行编程。在.NET Framework中,这个工作可以由wsdl.exe完成。在Java中,可以在JBuilder或者VisualAge Java等Java IDE中安装一个叫做WASP Developer的免费插件,这个插件也能完成由WSDL描述生成Proxy类的工作。另外,该公司还提供了WASP Server for Java和WASP UDDI,降低了用户用Java开发Web Services以及建立UDDI服务的难度。
在本文的例子中,用了JBuilder 7+WASP Developer来调用前文中建立的.NET XML Web Services。在调用之前,首先是用WASP Developer生成Proxy类。从图表7、8中可以看到,生成Proxy的工具已经在Java中也创建了一个Person类:
表7. 用WASP Developer生成的Proxy类

表8. WASP Developer创建的Person类
package javaclient.service1Soap12Clientstruct; public class Person { public java.lang.String Name; public java.lang.String Gender; } /* * Generated by WSDLCompiler, (c) 2002, Systinet Corp. * http://www.systinet.com */