扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
服务的访问 GET方式的服务访问 一般的SOAP消息都是采用POST方式实现传递,但也可以通过GET方式来访问。比如以下给出的一个服务——“HelloWorld”,其源码如下: 文件HelloWorld.jws /** * @author 飞鹰 */ public class HelloWorld { public String helloWorld() { //在服务器端打印输出 System.out.println( "Hello World!" ); return "Hello World!"; }//helloWorld() 客户端服务访问编程 Axis提供了一套API来实现SOAP,从http://localhost:8080/axis/docs/apiDocs/index.html可以看到Axis的API文档。 其中,org.apache.axis.client.Call和org.apache.axis.client.Service是两个比较常用的类,一般的客户端程序欲访问一个Web Service时,都要生成一个客户端的Service对象和Call对象,在访问服务之前,首先要对Call对象设置相应的参数,包括服务的位置、操作名、入口参数、返回值类型等,最后调用Call对象的invoke方法访问服务。 以下给出了一个客户端访问Web服务的例程——AXISTest.java: 文件AXISTest.java package axisexercise; import org.apache.axis.client.Service; import org.apache.axis.encoding.XMLType; * @author 飞鹰 */ public class AXISTest { public static void main( String[] args ) throws Exception { Service service = new Service(); Call call = ( Call ) service.createCall(); //////////访问即时发布的Distance服务 //设置访问点 call.setTargetEndpointAddress( "http://localhost:8080/axis/Distance.jws" ); call.setOperationName( "convertMile2Kilometre" ); call.addParameter( "op1", XMLType.XSD_DOUBLE, ParameterMode.IN ); call.setReturnType( XMLType.XSD_DOUBLE ); Double d1 = new Double( 190 ); System.out.println( d1 + " 英里相当于 " + call.invoke( new Object[] {d1} ) + " 公里!" ); call = ( Call ) service.createCall(); //设置访问点 call.setTargetEndpointAddress( "http://localhost:8080/axis/services/Capacity" ); call.setOperationName( "convertGallon2Litre" ); call.addParameter( "op1", XMLType.XSD_DOUBLE, ParameterMode.IN ); call.setReturnType( XMLType.XSD_DOUBLE ); d1 = new Double( 10.00 ); System.out.println( d1 + " 加仑相当于 " + call.invoke( new Object[] {d1} ) + " 升!" ); } //main() }/* AXISTest */ 190.0英里相当于305.71公里! 10.0加仑相当于45.46升! 总结 Web Services是未来网络应用的发展方向,SOAP和WSDL是Web Services的核心协议,Axis给出了一个很好的SOAP实现,它使得开发Web Services应用变得轻松而有趣。 |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者