SOAPACTION_URI_PROPERTY 在 Call webservice with axis

SOAPACTION_URI_PROPERTY in Call webservice with axis

我想用 axis.I 调用 Web 服务,想使用此代码。有人能告诉我 Call.SOAPACTION_URI_PROPERTY 的值应该是多少吗?

代码:

         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());
}

在这一行

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

您是在告诉您要指定肥皂操作并且肥皂操作是摄氏度到华氏度。

SOAP 操作不是强制性的,可用于告诉 Web 服务您要执行哪个方法。 编辑:

因此要分配的值取决于您 wsdl 中的规范。您应该找到一些名为 "operation name='something'" 的标签,以查看为 WS 定义了哪些操作。

尝试替换

call.setOperationName(new QName("http://tempuri.org/CelsiusToFahrenheit","CelsiusToFahrenheit"));

call.setOperationName(new QName("http://tempuri.org","CelsiusToFahrenheit"));