Параметры не передаются в .net webservice - PullRequest
0 голосов
/ 08 марта 2011

У меня проблема с передачей параметров в веб-службу .Net. Я использую оси и Java в качестве клиента. Когда я запускаю свой клиент Java и одновременно отлаживаю свой веб-сервис, я могу вызвать веб-сервис, но когда я проверяю параметры, переданные веб-сервису .net, значение равно нулю. что я должен делать?

Вот мой код:

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 голосов
/ 08 марта 2011

Я думаю, что это может быть проблема пространства имен с именем операции.

Попробуйте заменить:

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

с

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

Пространство имен - это первый параметр конструктора QName. Это может помочь отладить сообщение SOAP от работающего клиента .NET и сравнить с созданным сообщением клиента Java.

...