AXIS1环境下调用AXIS2服务端问题

我的项目现在是用的AXIS1的环境但是想调用AXIS2的服务端.我用的RPC的方式.每次调用都会报出org.apache.axis2.AxisFault: String index out of range: -12的错误.在纯AXIS2的环境下是可以的.我的代码如下
import javax.xml.namespace.QName;

import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;

public class test {
/**
* RPC调用AXIS2 webservice
* @param endpoint 服务地址 如:http://192.168.212.192:8090/jyedi/services/ediService?wsdl
* @param localPart 方法名 如sendMessageLD2WMS
* @param opArgs 方法参数 如Object[] opArgs = new Object[] { param };
* @param namespaceURI 命名空间 如 :targetNamespace="http://impl.services.service.server.edi.vtradex.com">
* @param opReturnType 返回类型 如字符串:Class[] opReturnType = new Class[] { String[].class };
* @throws org.apache.axis2.AxisFault
*/
public static String axis2RPCInvoke(String endpoint,String localPart,Object[] opArgs,String namespaceURI,Class[] opReturnType) throws org.apache.axis2.AxisFault, AxisFault
{
Object[] ret = null;
try
{
RPCServiceClient serviceClient = new RPCServiceClient();
Options options = serviceClient.getOptions();
EndpointReference targetEPR = new EndpointReference(endpoint);
options.setTo(targetEPR);
QName opQName = new QName(namespaceURI, localPart);
ret = serviceClient.invokeBlocking(opQName, opArgs, opReturnType);
System.out.println(((String[]) ret[0])[0]);
}
catch (AxisFault e)
{
e.printStackTrace();
}
return ((String[]) ret[0])[0];
}
}

查看全部
z15918320
长沙大猫
2015/08/05 07:46
  • web service
  • 点赞
  • 收藏
  • 回答
    私信

0个回复