Как вызвать ось Apache клиента в Java - PullRequest
2 голосов
/ 21 января 2011

Я хочу подключиться к веб-сервису с осью apache в java, и у меня есть какой-то неправильный параметр, но я не знаю, какой:

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import javax.xml.namespace.QName;

 public class Test_Web_Service
 {

 public static void main(String [] args) throws Exception {

     try {

            String endpoint =  "http://www.w3schools.com/webservices/tempconvert.asmx";

            Service  service = new Service();
            Call call= (Call) service.createCall();

            call.setProperty( Call.SOAPACTION_USE_PROPERTY, new Boolean( true ) );
            call.setProperty( Call.SOAPACTION_URI_PROPERTY, "http://tempuri.org/CelsiusToFahrenheit");

            call.setTargetEndpointAddress( new java.net.URL(endpoint) );
            call.setOperationName(new QName("http://tempuri.org/CelsiusToFahrenheit","CelsiusToFahrenheit"));

            String ret = (String) call.invoke( new Object[] {"20"} );
            System.out.println("Sent '20', got '" + ret + "'");

     } catch (Exception e) {
            System.err.println(e.toString());
    }
 }
}


ссылка на веб-сервис: http://www.w3schools.com/webservices/tempconvert.asmx
В переменную ret я получаю сообщение Error. Это потому, что у меня неверный параметр в QName.

1 Ответ

1 голос
/ 21 января 2011

Это связано с несоответствием между кодом клиента и service.server не может декодировать ваш запрос и продолжить обработку со значениями по умолчанию

Вы можете попробовать это вместо

call.setOperationName(new QName("http://tempuri.org/","CelsiusToFahrenheit")); 
call.addParameter(new QName("http://tempuri.org/","Celsius"),XMLType.XSD_STRING,ParameterMode.IN);
String ret = (String) call.invoke( new Object[] {"20"} );

обратите внимание также на изменение namespaceURI.

...