Вызов веб-службы из приложения Android возвращает нулевой объект

Я пишу приложение для Android, которое взаимодействует с веб-службой с помощью KSOAP. Соединение между веб-службой и приложением Android работает, так как я могу вызвать веб-службу и получить возвращаемое значение (привет). Но если я попытаюсь дать имя из приложения веб-службе через .addProperty, веб-служба вернет нулевой объект.

Вот мой код:

Основная деятельность:

private final String NAMESPACE_Local = "http://test.com/";  
    private final String URL_Local = "http://168.185.226.21:7001/myTest/myTestWebServiceService";
  private final String SOAP_ACTION_Local = "Hello_Action_Extend";
   private final String METHOD_NAME_Local = "hello_extend";

    public void LocalServer(View view)
    {
        TextView text = (TextView) findViewById(R.id.update_text);

        SoapObject request = new SoapObject(NAMESPACE_Local, METHOD_NAME_Local);
        request.addProperty("name", "Christian");

        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
        envelope.setOutputSoapObject(request);
        HttpTransportSE androidHttpTransport = new HttpTransportSE(URL_Local);

        try {
            androidHttpTransport.call(SOAP_ACTION_Local, envelope);
            SoapPrimitive response = (SoapPrimitive)envelope.getResponse();
            Log.i("myApp", response.toString());


            text.setText(response.toString());

        } catch (Exception e) {
            e.printStackTrace();
            Toast.makeText(this,"Device or service offline",Toast.LENGTH_LONG).show();
        }
    }

Веб сервер:

package com.test;

import javax.jws.*;

@WebService
public class myTestWebService {

    @WebMethod(action="Hello_Action") //that method works
    public String hello() {
        return "hello";
    }

    @WebMethod(action="Hello_Action_Extend")
    public String hello_extend(String name) //that works also, but it is giving back "hello null"
    {
        return "hello "+name;
    }
}

Я надеюсь, что вы можете помочь мне!


person chrissik    schedule 05.03.2013    source источник


Ответы (1)


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

request.addProperty("name", "Christian");

за:

request.addProperty("name",ElementType.STRING_CLASS, "Christian");

и ответ на:

SoapObject reponse=(SoapObject)envelope.getResponse();
response.getProperty("name");

Мыльный объект API

person AlexBcn    schedule 05.03.2013
comment
Эй, спасибо за ответ. К сожалению, Eclipse выдает ошибки для каждого из ваших предложений. Для request.addProperty(имя,ElementType.STRING_CLASS, Кристиан); говорит, что STRING_CLASS не может быть разрешен или не является полем.... Для второго response.getProperty(name); Eclipse хочет привести ответ либо к SoapObject, либо к KvmSerializable, но ни то, ни другое не работает. - person chrissik; 06.03.2013