代码之家  ›  专栏  ›  技术社区  ›  John

使用轴调用Web服务中的SOAPACTION_URI_PROPERTY

  •  0
  • John  · 技术社区  · 8 年前

    我想用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());
    }
    
    1 回复  |  直到 8 年前
        1
  •  1
  •   Hooch    8 年前

    在这一行

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

    您告诉我们要指定一个soap操作,并且soap操作是CelsiusToFahrenheit。

    SOAP操作不是强制性的,可以用来告诉Webservice要执行哪个方法。 编辑:

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

    尝试更换

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

    具有

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