1
数値を受け取るWebサービスに数値パラメータを渡して返します。数値パラメータをJavaクライアントから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(サーバが受信したクライアントでの戻り値がある これは、Webメソッドの抜粋ですnumber as zero)、パラメーターを渡すために使用したメソッドは、パラメーターがStringの場合に正常に機能します。私はサーバで戻り値をハードコーディングしようとしましたが、クライアントの出力は正常です。したがって、サーバがパラメータを取得した方法が問題であると考えられました。
これはなぜ発生し、これを解決するのか、ご存じですか?
任意のヘルプは、私はあなたの問題を引き起こしているのか分からないおかげ
お返事ありがとうございます。私はちょうどその問題を解決しました。それは、クライアントとサーバーの間の不一致のエンコーディングのためです。[ここでは](http://forums.oracle.com/forums/thread.jspa?threadID=333757&start=0&tstart= 0)。コード 'call.setEncoding(null);'を追加して解決しました。ご迷惑おかけして申し訳ありません。 – rin