Axis远程调用WebService接口
2015-07-22 09:34
375 查看
前提:需要调用webservice接口时,获取到wsdl地址,并清楚里面的相关内容。
1 引入相关jar包:axis相关jar包下载
2 java相关代码,和网上提供的大致相同:
================================================================================================================================
问题1:实际在部署开发的过程中,endpoint一开始填写的是wsdl地址,也就是类似于http://www.baidu.com/myService/serviceTest?wsdl这样的地址。而运行时会报如下错误:
而将http://www.baidu.com/myService/serviceTest?wsdl修改成http://www.baidu.com/myService/serviceTest后,也就是去除"?wsdl"则可正常访问。
1 引入相关jar包:axis相关jar包下载
2 java相关代码,和网上提供的大致相同:
package com.demo.service; import java.rmi.RemoteException; import javax.xml.rpc.ServiceException; import org.apache.axis.client.Call; import org.apache.axis.client.Service; public class MyClient { public static void main(String[] args) { try { // 直接引用远程的wsdl文件地址,如http://www.baidu.com/myService/serviceTest String endpoint = ""; Service service = new Service(); Call call = (Call) service.createCall(); call.setTargetEndpointAddress(endpoint); call.setOperationName("sendInfo");// WSDL里面描述的接口名称 call.addParameter("in0", org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);// 接口的参数 call.addParameter("in1", org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);// 接口的参数 call.addParameter("in2", org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);// 接口的参数 call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);// 设置返回类型 String result = (String) call.invoke(new Object[] { "", "", "" });// 必须和addParameter方法中设置的参数类型一致 // 给方法传递参数,并且调用方法 System.out.println("result is " + result); } catch (ServiceException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (RemoteException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
================================================================================================================================
问题1:实际在部署开发的过程中,endpoint一开始填写的是wsdl地址,也就是类似于http://www.baidu.com/myService/serviceTest?wsdl这样的地址。而运行时会报如下错误:
AxisFault faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException faultSubcode: faultString: org.xml.sax.SAXException: Bad envelope tag: definitions faultActor: faultNode: faultDetail: {http://xml.apache.org/axis/}stackTrace:org.xml.sax.SAXException: Bad envelope tag: definitions at org.apache.axis.message.EnvelopeBuilder.startElement(EnvelopeBuilder.java:71) at org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1048) at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source) at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source) at org.apache.xerces.impl.XMLNSDocumentScannerImpl$NSContentDispatcher.scanRootElementHook(Unknown Source) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source) at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source) at javax.xml.parsers.SAXParser.parse(SAXParser.java:392) at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227) at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696) at org.apache.axis.Message.getSOAPEnvelope(Message.java:435) at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62) at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206) at org.apache.axis.client.Call.invokeEngine(Call.java:2784) at org.apache.axis.client.Call.invoke(Call.java:2767) at org.apache.axis.client.Call.invoke(Call.java:2443) at org.apache.axis.client.Call.invoke(Call.java:2366) at org.apache.axis.client.Call.invoke(Call.java:1812) at com.htc.ode.service.ServiceTest.main(ServiceTest.java:34) org.xml.sax.SAXException: Bad envelope tag: definitions at org.apache.axis.AxisFault.makeFault(AxisFault.java:101) at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:701) at org.apache.axis.Message.getSOAPEnvelope(Message.java:435) at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62) at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206) at org.apache.axis.client.Call.invokeEngine(Call.java:2784) at org.apache.axis.client.Call.invoke(Call.java:2767) at org.apache.axis.client.Call.invoke(Call.java:2443) at org.apache.axis.client.Call.invoke(Call.java:2366) at org.apache.axis.client.Call.invoke(Call.java:1812) at com.htc.ode.service.ServiceTest.main(ServiceTest.java:34) Caused by: org.xml.sax.SAXException: Bad envelope tag: definitions at org.apache.axis.message.EnvelopeBuilder.startElement(EnvelopeBuilder.java:71) at org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1048) at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source) at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source) at org.apache.xerces.impl.XMLNSDocumentScannerImpl$NSContentDispatcher.scanRootElementHook(Unknown Source) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source) at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source) at javax.xml.parsers.SAXParser.parse(SAXParser.java:392) at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227) at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696) ... 9 more
而将http://www.baidu.com/myService/serviceTest?wsdl修改成http://www.baidu.com/myService/serviceTest后,也就是去除"?wsdl"则可正常访问。
相关文章推荐
- ORA-28001: the password has expired解决方法
- hdu 2010 水仙花数
- android weight 剩余空间使用
- 第6章 服务模式
- HTML5的设计目的是为了在移动设备上支持多媒体
- loadrunner使用sitescope监测监控mysql数据库
- 简单配置主机(plsql)连接虚拟机oracle
- 黑马66期android学习笔记18_dp和px
- C#检测pc光驱里是否插入了光盘的方法
- Num 4: HDOJ: 题目1106 : 排序(以5为分隔符进行分割)
- 理解delete和free
- hdu 5291 Candy Distribution 2015 Multi-University Training Contest 1
- [.net 面向对象程序设计进阶] (16) 多线程(Multithreading)(一) 利用多线程提高程序性能(上)
- linux下vi编辑器回格不能删除内容,并且使用方向键也会有问题
- Android Studio使用技巧系列教程(六)
- About enterprisedb密码
- 内部类和匿名内部类
- MySqlBackup.NET - MySQL Backup Solution for C#, VB.NET, ASP.NET
- Linux中软链接与硬链接
- android 基本控件