2011-02-03 15 views
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の場合に正常に機能します。私はサーバで戻り値をハードコーディングしようとしましたが、クライアントの出力は正常です。したがって、サーバがパラメータを取得した方法が問題であると考えられました。

これはなぜ発生し、これを解決するのか、ご存じですか?

任意のヘルプは、私はあなたの問題を引き起こしているのか分からないおかげ

答えて

0

、理解されるであろう。しかし、私が最初にやることは、サーバーに送信されている実際の要求をキャプチャしようとすることです。これは、根本的な問題がクライアント側にあるのかサーバー側にあるのかの手がかりを与えるはずです。

+0

お返事ありがとうございます。私はちょうどその問題を解決しました。それは、クライアントとサーバーの間の不一致のエンコーディングのためです。[ここでは](http://forums.oracle.com/forums/thread.jspa?threadID=333757&start=0&tstart= 0)。コード 'call.setEncoding(null);'を追加して解決しました。ご迷惑おかけして申し訳ありません。 – rin

関連する問題