Android: про ksoap2 и веб-сервис - PullRequest
       22

Android: про ksoap2 и веб-сервис

1 голос
/ 15 сентября 2011

Я получаю wsdl и URL, а сервер написан на C ++; Я использую KSoap2 в Android для доступа к методу, но он всегда распечатывает: "Метод 'имя метода' не реализован" !!! Может кто-нибудь мне помочь? Заранее спасибо!

Ответы [ 4 ]

1 голос
/ 16 октября 2012

Вы правильно создаете свой запрос и SoapAction?

Попробуйте приведенный ниже пример (это общедоступный веб-сервис с 0 аргументами) и посмотрите, работает ли он для вас.

private static final String WSDL_URL = "http://wsf.cdyne.com/WeatherWS/Weather.asmx?WSDL";
private static final String WS_NAMESPACE = "http://ws.cdyne.com/WeatherWS/";
private static final String WS_METHOD_NAME = "GetWeatherInformation";

// 1. Creating SOAP request with no arguments
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.setOutputSoapObject(new SoapObject(WS_NAMESPACE, WS_METHOD_NAME));

// 2. Create a HTTP Transport object to send the web service request
HttpTransportSE httpTransport = new HttpTransportSE(WSDL_URL);
httpTransport.debug = true; // allows capture of raw request/respose in Logcat

// 3. Make the web service invocation
httpTransport.call(WS_NAMESPACE + WS_METHOD_NAME, envelope);

Log.d(TAG, "HTTP REQUEST:\n" + httpTransport.requestDump);
Log.d(TAG, "HTTP RESPONSE:\n" + httpTransport.responseDump);

Ознакомьтесь с этим подробным руководством, объясняющим основы с использованием kSOAP2 с Android

0 голосов
/ 15 сентября 2011
private static final String NAMESPACE = "http://tempuri.org/";
private static final String URL = "http://216.128.29.26/webservices/TempConvert.asmx";
private static final String SOAP_ACTION = "http://tempuri.org/CelsiusToFahrenheit";
private static final String METHOD_NAME = "CelsiusToFahrenheit"

Вы должны указать необходимое поле, как указано выше.

0 голосов
/ 15 сентября 2011
private static final String NAMESPACE = "http://tempuri.org/";
private static final String URL = "http://216.128.29.26/webservices/TempConvert.asmx";
private static final String SOAP_ACTION = "http://tempuri.org/CelsiusToFahrenheit";
private static final String METHOD_NAME = "CelsiusToFahrenheit";

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    TextView tv;
    tv = (TextView) findViewById(R.id.tv);
    tv.setText(ws());
}
public String ws() {
    String result = "";
    try
    {
        SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
        request.addProperty("Celsius", "32");

        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
                SoapEnvelope.VER11);

        envelope.dotNet = true;

        envelope.setOutputSoapObject(request);

        HttpTransportSE ht = new HttpTransportSE(URL);
        ht.call(SOAP_ACTION, envelope);

        if(envelope.getResponse()!=null){
            SoapPrimitive response = (SoapPrimitive) envelope.getResponse();
            result = "FeranHit : " + response.toString();
        }   
    }
    catch (Exception e) 
    {
        result = e.getMessage();
    }
    return result;
}

смотри это мой код.и я получаю полный результат.Это просто тестовая программа для ksoap2.

Я не включил здесь никаких библиотек.

0 голосов
/ 15 сентября 2011

см. Здесь может помочь простой пример ksoap http://vimeo.com/9633556

...