Android ksoap2, данные не передаются после

#ksoap2 #android-ksoap2

#ksoap2 #android-ksoap2

Вопрос:

Я использую ksoap2 для связи с удаленной веб-службой. По какой-то причине свойства, которые я добавляю в SoapObject, не отправляются. Где я ошибся? Я перепробовал все, я получаю ответ, когда выполняю прямую отправку xml-запроса, но это не то, что я хочу. Я также получаю ответ от сервера, но ни одно из значений, которые я публикую, не передается. Я прочитал все существующие блоги, официальную документацию и даже связанные с SO вопросы, что я пропустил?

Вот фрагмент метода, вызываемого из doInBackground() асинхронной задачи.

 public SoapObject getSoapObject() {
        // Create request
        SoapObject requesty = new SoapObject(NAMESPACE, METHOD_NAME);

        // Add the property to request object
        requesty.addProperty(getPropertyInfo("PARAMETER_1", "VALUE_1"));

        // Create envelope
        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
        envelope.dotNet = true;

        // Set output SOAP object
        envelope.setOutputSoapObject(requesty);

        // Create HTTP call object
        HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
        SoapObject soapObject = null;
        try {
            // Send to web service
            androidHttpTransport.call(SOAP_ACTION, envelope);       
            soapObject =  (SoapObject) envelope.getResponse();
        } catch (SoapFault e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (HttpResponseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (XmlPullParserException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return soapObject;
    }

    private PropertyInfo getPropertyInfo(String name, String value) {
        PropertyInfo propInfo = new PropertyInfo();
        propInfo.setName(name);
        propInfo.setValue(value);
        propInfo.setType(string.class);
        return propInfo;
    }   
  

Ответ №1:

Вместо того, чтобы использовать ksoap2, я опубликовал напрямую через HttpPost и вручную проанализировал различные значения с помощью пользовательского анализатора XML. Я знаю, что это может быть не лучший из вариантов, но SOAP сейчас просто старая школа.