axis客户端访问-axis访问sap的webserv多返回值问题

问题描述

axis访问sap的webserv多返回值问题

sap的 wsdl文件部分:

xsd:complexType
xsd:sequence

/xsd:sequence
/xsd:complexType
/xsd:element

xsd:complexType
xsd:sequence

/xsd:sequence
/xsd:complexType
/xsd:element
/xsd:schema
/wsdl:types

/wsdl:message

/wsdl:message

我的java代码:
public static void main(String args[]) {
String wsdlURISap = """";
String namespaceURI = """";
String operationName = """";

String serviceLocalPart = """"; //
String portName = """"; //

  try{             wsdlURISap = ""http://192.168.108.106:8001/sap/bc/srt/wsdl/flv_10002A111AD1/bndg_url/sap/bc/srt/rfc/sap/zmminterface/300/mmservices/binding?sap-client=300?wsdl"";         namespaceURI = ""urn:sap-com:document:sap:soap:functions:mc-style"";//            operationName = ""Zmminterface"";//          serviceLocalPart  =  ""mmservices"" ;//          portName = ""binding"" ;//              //5个参数测试值            String Iheads =""1"";            String Iitems=""2"";            String  Intid = ""3"";                            String  Iselec = ""4"";                       String   Paras =""5"";             Object[] arg0 = new Object[] { Iheads IitemsIntid Iselec  Paras };               Parser wsdlParser = new Parser();            //这里用户名密码设置有用 ,比如不设置会把url无效            wsdlParser.setUsername(""sapuser"");            wsdlParser.setPassword(""123321"");                       wsdlParser.run(wsdlURISap);           // 名命空间,服务名            QName qName = new QName(namespaceURI serviceLocalPart);                            Service clientService = new Service(wsdlParser qName);                         javax.xml.rpc.Call call = clientService.createCall(                QName.valueOf(portName) QName.valueOf(operationName));          // http 方式认证用户名和密码           ((org.apache.axis.client.Call) call).getMessageContext().setUsername(""sapuser""); // httpbase认证用户名             ((org.apache.axis.client.Call) call).getMessageContext().setPassword(""123321"");            ((org.apache.axis.client.Call) call).setTimeout(new Integer(30 * 1000));            //调用sap             String    result =  (String) call.invoke(arg0);            System.out.println(result);       }     catch(Exception e ){          System.out.println(""clientSAP方法返回值 *****""+e.toString() );    }}    ==========================================    异常:    [ERROR] Exception:

org.xml.sax.SAXException: Deserializing parameter 'Eheads': could not find deserializer for type {urn:sap-com:document:sap:rfc:functions}string
at org.apache.axis.message.RPCHandler.onStartChild(RPCHandler.java:277)
at org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1035)
at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:165)
at org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:1141)
at org.apache.axis.message.RPCElement.deserialize(RPCElement.java:236)
at org.apache.axis.message.RPCElement.getParams(RPCElement.java:384)
at org.apache.axis.client.Call.invoke(Call.java:2467)
at org.apache.axis.client.Call.invoke(Call.java:2366)
at org.apache.axis.client.Call.invoke(Call.java:1812)
at com.infor.webService.client.SapWebServiceClinet.main(SapWebServiceClinet.java:60)

==========================问题像是:三个字符型的返回值, 我要怎么 定义接收 ? 

解决方案

wsdl文件重复发一遍:

xsd:complexType
xsd:sequence

/xsd:sequence
/xsd:complexType
/xsd:element

xsd:complexType
xsd:sequence

/xsd:sequence
/xsd:complexType
/xsd:element
/xsd:schema
/wsdl:types

/wsdl:message

/wsdl:message

解决方案二:

解决方案三:
如果用axis2的RPC 方式访问会报: *****org.apache.axis2.AxisFault: First Element must contain the local name Envelope but found definitions

时间: 2024-09-14 22:59:52

axis客户端访问-axis访问sap的webserv多返回值问题的相关文章

PHP 中用curl访问一个页面和直接在浏览器中直接访问这个页面为什么两次的返回值不一样?

问题描述 PHP 中用curl访问一个页面和直接在浏览器中直接访问这个页面为什么两次的返回值不一样? 直接在浏览器中访问 用PHP中的curl访问后,为甚么两次的不一样?? 解决方案 你用curl访问时的参数设置跟你用浏览器时的设置是否一样?明显示这里不能使用匿名访问 解决方案二: useragent和header看下是否一样的. 字面意思是说匿名访问,是否要模拟登陆啊,推荐用chrome或者firefox的调试模式看下这几个信息是否有什么特别需要设置的

C#开发webservice调用SAP的webservice后返回值是表类型,如何获取值?

问题描述 求助,C#调用SAP的webservice后返回值是表类型,如何获取表的行数? 解决方案 解决方案二:什么叫表类型?DataTable?SAP天堂也返回这样的东西?解决方案三:ws返回的就是xml了,里面的数据是可以获取的.至于你说的表,具体是什么?如果是datatable,好办,解析xml就是了.如果单单是某个表名,那就啥都不能获取到.解决方案四:引用2楼guwei4037的回复: ws返回的就是xml了,里面的数据是可以获取的.至于你说的表,具体是什么?如果是datatable,好

ajax 访问接口,200 success并且有返回值,但是不执行success回调方法执行了error。

问题描述 ajax访问接口,200success并且有返回值,但是不执行success回调方法执行了error.这是为啥,请大神详细帮我解释,坐等<scripttype="text/javascript">$(function(){$.ajax({url:"http://api.k780.com:88/?app=weather.future&weaid=1&appkey=10003&sign=b59bc3ef6191eb9f747dd4e8

axis-多线程调用Axis客户端异常问题请教

问题描述 多线程调用Axis客户端异常问题请教 相同版本程序大部分时间可以正常运行(一直为bug不规律出现烦恼,提升并发线程数量不会增加其出现频率,至今出现2次), 偶尔启动运行抛出以下异常(不存在参数个数不匹配问题).下附异常信息与代码片段: javax.xml.rpc.JAXRPCException: Number of parameters passed in (1) doesn't match the number of IN/INOUT parameters (2) from the

web service-jboss5环境下,cxf和axis调用webservice客户端都是不报错,不返回结果

问题描述 jboss5环境下,cxf和axis调用webservice客户端都是不报错,不返回结果 有谁碰到过这种问题,cxf和axis调用webservice没问题,部署到jboss5里面就有问题, 不报错,不返回结果 解决方案 http://blog.csdn.net/shiqi472807092/article/details/8254494

jquery解决客户端跨域访问问题_jquery

客户端"跨域访问"一直是一个头疼的问题,好在有jQuery帮忙,从jQuery-1.2以后跨域问题便迎刃而解.由于自己在项目中遇到跨域问题,借此机会对跨域问题来刨根问底,查阅了相关资料和自己的实践,算是解决了跨域问题.便记录下来,以供查阅.  jQuery.ajax()支持get方式的跨域,这其实是采用jsonp的方式来完成的.  真实案例: 复制代码 代码如下:    $.ajax({             async:false,             url: 'http:/

axis 客户端调用jax-rs 服务端时传参数问题

问题描述 接口服务端的方法:@Produces("application/xml")@Consumes("application/xml")@Path("login")@SingletonpublicclassHelloServiceImplimplementsHelloService{@POST@Path("userVerify")@Produces("application/xml")@Consumes

epoll异步服务端程序,客户端采用多线程访问,服务端总是返回errno 9和107

问题描述 epoll异步服务端程序,客户端采用多线程访问,服务端总是返回errno 9和107 #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define MAX_EVENTS 65535 #define SERVER_PORT 8887 #defi

android-js如何主动访问Android和ios方法,并返回数据

问题描述 js如何主动访问Android和ios方法,并返回数据 您好,我是做webapp的开发的,最近遇到一个问题,就是js如何主动调用Android的方法并返回参数,想请问大神您知道怎么处理吗? 解决方案 下面是我写的一些示例: MGSD.Static.IOS = "iOS"; MGSD.Static.ANDROID = "android"; MGSD.exchange = function(value, funcname){ if(!MGSD.OS){//第一