我尝试将数字参数传递给接收该值的Web服务并将其返回。 这是网络方法的片段:
@WebMethod(operationName = "getNumber")
public Integer getNumber(@WebParam(name = "i")
Integer i) {
//TODO write your implementation code here:
System.out.println("number : "+i);
return i;
}
这是我客户端代码的片段:
Map results = FastMap.newInstance();
results.put("result", "success");
String endPoint = "http://localhost:8084/ProvideWS/MathWS";
URL endpoint=null;
try{
endpoint = new URL(endPoint);
}
catch (MalformedURLException e) {
org.ofbiz.base.util.Debug.log("Location not a valid URL "+e);
// TODO: handle exception
}
Service service = null;
Call call = null;
try{
service = new Service();
call = (Call)service.createCall();
call.setTargetEndpointAddress(endpoint);
String nameSpace = "http://ws/";
String serviceName = "getNumber";
call.setOperationName(new QName(nameSpace, serviceName));
call.addParameter("i",org.apache.axis.Constants.XSD_INTEGER , ParameterMode.IN);
call.setReturnType(org.apache.axis.Constants.XSD_INTEGER);
Object msg[] = new Object[]{new Integer(5)};
for (Object o : msg) {
org.ofbiz.base.util.Debug.log("object to be sent===== "+o.toString());
}
Object ret = call.invoke(msg);
results.put("result", "result : "+ ret.toString());
}
catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
org.ofbiz.base.util.Debug.log("exc when running soap client test : "+e);
results.put("result", "error : "+e);
}
return results;
问题是客户端的返回值始终为0(服务器接收到的数字为零),当参数为String时,用于传递参数的方法工作正常。 I.ve试图对服务器中的返回值进行硬编码,客户端的输出很好,所以我认为必须是服务器检索参数的方法就是问题。
你知道为什么会发生这种情况以及如何解决这个问题吗?
任何帮助将不胜感激,谢谢
答案 0 :(得分:0)
我不知道是什么原因引起了你的问题。但我要做的第一件事就是尝试捕获发送到服务器的实际请求。这应该为您提供一些关于根问题是在客户端还是服务器端的线索。