проблема с передачей числового параметра в веб-сервис из Java-клиента - PullRequest
1 голос
/ 03 февраля 2011

Я пытаюсь передать числовой параметр веб-службе, которая получает значение и возвращает его обратно. это фрагмент веб-метода:

@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. Я пытался жестко запрограммировать возвращаемое значение на сервере, и вывод на клиенте был в порядке, поэтому я подумал, что проблема заключается в том, как сервер извлекал параметр.

У вас есть идеи, почему это происходит и как это решить?

любая помощь будет оценена, спасибо

1 Ответ

0 голосов
/ 03 февраля 2011

Я не знаю, в чем причина вашей проблемы.Но первое, что я хотел бы сделать, это попытаться перехватить фактический запрос, отправляемый на сервер.Это должно дать вам некоторые подсказки относительно того, находится ли проблема с корнем на стороне клиента или сервера.

...