当前位置:编程学习 > JAVA >>

java调用.net webService问题

环境:java axis调用.net的webService.
代码:

public String upDocDispatch(DocDispatchInfo gw) {
String gxxml = DocUtils.getGWXml(gw);
try {
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(new java.net.URL("http://10.200.0.70/ExchangePlat.asmx"));
call.setUseSOAPAction(true);
call.setSOAPActionURI("http://wisesoft.net.cn/ArchivesExchangePlat");
call.setOperationName(new QName("http://wisesoft.net.cn","ArchivesExchangePlat"));
call.setEncodingStyle( null );
if (call != null) {
try {
call.addParameter(new QName("http://wisesoft.net.cn","strdoc"),org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN); 
call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);  
String rnStr = (String) call.invoke(new Object[] {gxxml});
return rnStr;
} catch (RemoteException e) {
return "upDocDispatch:invokeError"+e.getMessage();
}
} else {
return "call:createError";
}
} catch (MalformedURLException e1) {
e1.printStackTrace();
} catch (ServiceException e) {
e.printStackTrace();
}
return "";
}

错误日志:
upDocDispatch:invokeError; nested exception is: 
javax.xml.rpc.JAXRPCException: Number of parameters passed in (1) doesn't match the number of IN/INOUT parameters (2) from the addParameter() calls。
看了参数 咋都没发现问题。我传入的参数是个比较复杂的 xml字符串。
为什么会一直报这样的问题。
有朋友遇到过么。
感谢你们的支持。 java webservice --------------------编程问答-------------------- 有朋友帮看下么  谢了 --------------------编程问答-------------------- call.addParameter(new QName("http://wisesoft.net.cn","strdoc"),org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN); 
                    call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);  
                    String rnStr = (String) call.invoke(new Object[] {gxxml});


参数类型错误,仔细检查上面几句。

--------------------编程问答-------------------- String rnStr = (String) call.invoke(new Object[] {gxxml});
这句改为
Object[] c={gxxml};
String rnStr = (String) call.invoke(c);
看下。 --------------------编程问答-------------------- 是不是少了一个参数,需要两参数,你才一个。再加一句
call.addParameter(new QName("",org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN); 
看看 --------------------编程问答-------------------- 只要一个参数 我把webService的截图发给你看下 --------------------编程问答-------------------- gxxml这个字符串是什么,里面是不是有逗号? --------------------编程问答-------------------- 是xml 比较复杂 --------------------编程问答-------------------- 还有朋友可以帮忙看下么 谢谢 --------------------编程问答-------------------- 这些是手写的?直接找问题还真不好找,因为它所提示的addParameter貌似没错,我查到的也类似这样:
call.addParameter("testParam", 
  org.apache.axis.Constants.XSD_STRING,
  javax.xml.rpc.ParameterMode.IN);

有没有用这个类org.apache.axis.wsdl.WSDL2Java来通过wsdl生成java? --------------------编程问答-------------------- 手写的 以前也手写过 没出问题 但是不知道咋个现在就出问题了。。 --------------------编程问答-------------------- 关键是 又要解决 有点头痛。。。 --------------------编程问答--------------------
引用 10 楼 phoenixLotus 的回复:
手写的 以前也手写过 没出问题 但是不知道咋个现在就出问题了。。

还是先通过WSDL2Java来自动生成一下

拿它和你手写的比较一下区别,作为参考来修改也是个办法
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,