我想用axis调用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());
}
答案 0 :(得分:1)
在这一行
call.setProperty( Call.SOAPACTION_USE_PROPERTY, new Boolean( true ) );
call.setProperty( Call.SOAPACTION_URI_PROPERTY, "http://tempuri.org/CelsiusToFahrenheit");
您告诉您要指定soap操作,并且soap操作是CelsiusToFahrenheit。
SOAP操作不是强制性的,可用于告诉Web服务您要执行哪种方法。 编辑:
所以要分配的值取决于你wsdl中的规范。您应该找到一些名为&#34的标签;操作名称='某些'"查看为WS定义的操作。
尝试替换
call.setOperationName(new QName("http://tempuri.org/CelsiusToFahrenheit","CelsiusToFahrenheit"));
与
call.setOperationName(new QName("http://tempuri.org","CelsiusToFahrenheit"));