服务器端要求参数为 byte[] param, param 可转换为protobuf 对象。
客户端先定义了protobuf对象,然后调用报错,程序如下
try {
// 使用RPC方式调用WebService
RPCServiceClient serviceClient = new RPCServiceClient();
// 指定调用WebService的URL
EndpointReference targetEPR = new EndpointReference(target);
Options options = serviceClient.getOptions();
//确定目标服务地址
options.setTo(targetEPR);
//确定调用方法
options.setAction("urn:queryData");
/**
* 指定要调用的getPrice方法及WSDL文件的命名空间
* 如果 webservice 服务端由axis2编写
* 命名空间 不一致导致的问题
* org.apache.axis2.AxisFault: java.lang.RuntimeException: Unexpected subelement arg0
*/
BillEntry.BillRequest.Builder req = BillEntry.BillRequest.newBuilder();
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MONTH, -2);
long startTime = cal.getTimeInMillis();
cal.add(Calendar.MINUTE, 1);
long endTime = cal.getTimeInMillis();
System.out.println("startTime="+startTime+",endTime="+endTime);
QName qname = new QName("http://impl.asiainfo.com", "queryData"); req.setBeginTime(startTime);
req.setEndTime(endTime);
req.setBusiType("T2");
req.setRowkey("0");
req.setRows(100); byte[] reqParam = req.build().toByteArray();
// 指定调用方法的参数值
Object[] parameters = new Object[] { reqParam };
// 指定webservice方法返回值的数据类型的Class对象
Class[] returnTypes = new Class[] { byte[].class};
// // 调用webservice服务返回结果集
// OMElement element = serviceClient.invokeBlocking(qname, parameters);
// String result = element.getFirstElement().getText();
// System.out.println(result);
//
// 调用webservice服务并输出该方法的返回值
Object[] response = serviceClient.invokeBlocking(qname, parameters, returnTypes);
// String r = (String) response[0];
byte[] r = (byte[]) response[0];返回错误
org.apache.axis2.AxisFault: Message missing required fields: subseq
at org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:531)
at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:375)
at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:421)
at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:555)
at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:531)
at org.apache.axis2.rpc.client.RPCServiceClient.invokeBlocking(RPCServiceClient.java:102)
at com.asiainfo.pbservice.test.main(test.java:74)
请教下什么错误,搜索不到,请大侠解惑!!
客户端先定义了protobuf对象,然后调用报错,程序如下
try {
// 使用RPC方式调用WebService
RPCServiceClient serviceClient = new RPCServiceClient();
// 指定调用WebService的URL
EndpointReference targetEPR = new EndpointReference(target);
Options options = serviceClient.getOptions();
//确定目标服务地址
options.setTo(targetEPR);
//确定调用方法
options.setAction("urn:queryData");
/**
* 指定要调用的getPrice方法及WSDL文件的命名空间
* 如果 webservice 服务端由axis2编写
* 命名空间 不一致导致的问题
* org.apache.axis2.AxisFault: java.lang.RuntimeException: Unexpected subelement arg0
*/
BillEntry.BillRequest.Builder req = BillEntry.BillRequest.newBuilder();
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MONTH, -2);
long startTime = cal.getTimeInMillis();
cal.add(Calendar.MINUTE, 1);
long endTime = cal.getTimeInMillis();
System.out.println("startTime="+startTime+",endTime="+endTime);
QName qname = new QName("http://impl.asiainfo.com", "queryData"); req.setBeginTime(startTime);
req.setEndTime(endTime);
req.setBusiType("T2");
req.setRowkey("0");
req.setRows(100); byte[] reqParam = req.build().toByteArray();
// 指定调用方法的参数值
Object[] parameters = new Object[] { reqParam };
// 指定webservice方法返回值的数据类型的Class对象
Class[] returnTypes = new Class[] { byte[].class};
// // 调用webservice服务返回结果集
// OMElement element = serviceClient.invokeBlocking(qname, parameters);
// String result = element.getFirstElement().getText();
// System.out.println(result);
//
// 调用webservice服务并输出该方法的返回值
Object[] response = serviceClient.invokeBlocking(qname, parameters, returnTypes);
// String r = (String) response[0];
byte[] r = (byte[]) response[0];返回错误
org.apache.axis2.AxisFault: Message missing required fields: subseq
at org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:531)
at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:375)
at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:421)
at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:555)
at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:531)
at org.apache.axis2.rpc.client.RPCServiceClient.invokeBlocking(RPCServiceClient.java:102)
at com.asiainfo.pbservice.test.main(test.java:74)
请教下什么错误,搜索不到,请大侠解惑!!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货