参数未传递给.net webservice

时间:2011-03-08 03:07:47

标签: java .net web-services axis

我在将参数传递给.Net webservice时遇到问题。我使用axis和java作为客户端。当我运行我的Java客户端并同时调试我的webservice时,我能够调用webservice但是当我检查传递给.net webservice的参数时,值是什么都没有。我该怎么办?

这是我的代码:

try {
    String endpoint = "http://localhost/Test/Service.asmx?WSDL";
    Service  xxx = new Service();
    Call call = (Call) (xxx.createCall());

    sAcctNo = "test";

    call.setTargetEndpointAddress( new java.net.URL(sEndPoint) );
    call.setProperty(javax.xml.rpc.Call.SOAPACTION_USE_PROPERTY,new Boolean(true));
    call.setProperty(javax.xml.rpc.Call.SOAPACTION_URI_PROPERTY,"http://tempuri.org/GetName");
    call.setOperationName(new QName("GetName"));

    call.setProperty(javax.xml.rpc.Call.OPERATION_STYLE_PROPERTY,"document");

    call.addParameter( new QName("http://tempuri.org","str"),XMLType.XSD_STRING,ParameterMode.IN);
    call.setReturnType(XMLType.XSD_STRING);

    call.setEncodingStyle(null);

    ret = (String) call.invoke( new Object[]{ sAcctNo  } );
    out.println("You passed : '" + ret + "'");

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

1 个答案:

答案 0 :(得分:0)

我认为它可能是操作名称的命名空间问题。

尝试更换:

call.setOperationName(new QName("GetName"));

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

命名空间是QName构造函数的第一个参数。从工作的.NET客户端调试SOAP消息并与生成的Java客户端消息进行比较可能会有所帮助。