Веб-сервис получает нулевые параметры из приложения, используя метод ksoap - PullRequest
3 голосов
/ 15 июня 2010

Я видел темы, обсуждающие это, но никто, похоже, не опубликовал решение.В данный момент я тестирую параметры передачи в мой веб-сервис .Net.Когда параметры достигают веб-сервиса, он добавляет его с дополнительной строкой, а затем возвращает его и моему приложению;но все, что я возвращаю, это строковое сообщение, а не параметр, который я передал.Что-то не так с моим веб-сервисом или методом мыла?

Soap:

Запрос SoapObject = новый SoapObject (NAMESPACE, METHOD_NAME);

    request.addProperty("A", "workowr");


    SoapSerializationEnvelope envelope =
        new SoapSerializationEnvelope(SoapEnvelope.VER11);
        envelope.dotNet = true;
        envelope.setOutputSoapObject(request);
        HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);    
        try {
            androidHttpTransport.call(SOAP_ACTION, envelope);
            SoapPrimitive result = (SoapPrimitive) envelope.getResponse();
            //SoapObject result = (SoapObject)envelope.getResponse();       
            String resultData = result.toString();
            testTV.setText(resultData);

        }
        catch(Exception e)
        {
            testTV.setText(e.getMessage());
        }

Вот мой простой веб-сервис .Net:

Открытая функция getRegInfo (ByVal A As String) As String

Return A + "String message"

End Function

Буду признателен за любую помощь.

Ответы [ 5 ]

5 голосов
/ 22 июня 2010

Для меня сработало изменение URL-адреса пространства имен как в моем веб-сервисе .Net, так и в моем приложении.

Например, у меня было:

"http://www.example.com/webservices/"

я изменил на:

"example.com/webservices /"

и он работал отлично.

Дайте ему шанс.

1 голос
/ 06 августа 2016

Идеальный код, который добавляет параметры это работает, попробуйте это

       SoapObject request = new SoapObject(WSDL_TARGET_NAMESPACE, OPERATION_NAME);

    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
    envelope.setOutputSoapObject(request);
    envelope.dotNet = true;
    PropertyInfo pi = new PropertyInfo();
    pi.setName("ProcName");
    pi.setValue(a);
    pi.setType(int.class);
    request.addProperty(pi);
    pi=new PropertyInfo();
    pi.setName("UserName");
    pi.setValue(b);
    pi.setType(String.class);
    request.addProperty(pi);

    pi=new PropertyInfo();
    pi.setName("Password");
    pi.setValue(c);
    pi.setType(String.class);
    request.addProperty(pi);

    pi=new PropertyInfo();
    pi.setName("Paras");
    pi.setValue(d);
    pi.setType(String.class);
    request.addProperty(pi);


    Object response = null;

    HttpTransportSE androidHttpTransport = new HttpTransportSE(SOAP_ADDRESS);

    try {
        androidHttpTransport.call(SOAP_ACTION, envelope);
        response = envelope.getResponse();
    } catch (final Exception e) {
        String error = "no";
    }
    return response.toString();
}
1 голос
/ 12 июля 2011

На самом деле нет необходимости иметь дополнительный символ "/" в конце.

После отладки и попыток обработки всего, что написано в сети, я обнаружил, что при передаче параметров самое важноечтобы иметь такое же утверждение в вашей декларации WebService и ksoap2.

Так что используйте "/" в обоих местах или удалите его из обоих мест."http://" также подходит для использования.

1 голос
/ 13 июля 2010

Да - кажется, что есть проблема с наличием двоеточия (:) в пространстве имен веб-службы при подключении через KSoap. Обычные непараметрические вызовы работают нормально, но параметры почему-то кажутся пустыми.

0 голосов
/ 24 декабря 2014

Вы должны скопировать и завершить действие Пространства имен и мыла точно так же, как они появляются в XML-файле WSDL.

У меня была такая же проблема, и когда я удалил http: // from (Пространство имен и действие Soap) проблема была решена. (в WSDL они без http://) На самом деле я пытался получить доступ к локальному веб-сервису (сервис установлен на локальном сервере)

Однако у меня есть другое приложение, которое обращается к внешнему веб-сервису .NET (веб-сервис центрального банка, чтобы получить обменный курс) WSDL NameSpace и SoapAction содержит http: // Мое приложение отлично работало без удаления http://

...