Использование веб-сервиса SOAP без ksoap2 в Android - PullRequest
2 голосов
/ 15 июля 2011

В моем приложении для Android я использую библиотеку ksoap2 для использования веб-службы мыла (& .net). Он работает правильно, но очень медленно (для анализа, элементов управления, циклов и процессов Base64ToBinary). Я хочу разобрать это быстрее. Можно ли разобрать его без использования ksoap2? Есть идеи? Спасибо за ваши рекомендации.

Ответы [ 5 ]

2 голосов
/ 07 февраля 2012

Вы можете использовать DefaultHttpClient , чтобы сделать это. Здесь ( Как вызвать веб-сервис SOAP с Android ) вы можете найти фрагмент кода.

0 голосов
/ 24 июля 2015

У меня другая проблема с KSoap2.К сожалению, библиотека ksoap2 не работает с моими веб-сервисами.Итак, наконец, я сделал с http-постом по умолчанию.

Я надеюсь, что это поможет кому-то в будущем.

private String makeHttpRequest(){
        try{
            String request = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><SOAP-ENV:Envelope xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:ns1=\"http://tempuri.org/\">"
                    +"<SOAP-ENV:Body>"
                    + "<ns1:Connect>"
                    + "<ns1:lstr_Login>xxxxx</ns1:lstr_Login>"
                    +"</ns1:Connect>"
                    +"</SOAP-ENV:Body>"
                    +"</SOAP-ENV:Envelope>";

            String soapAction = "http://tempuri.org/Connect"; //this would be your soapAction from wsdl

            StringEntity se = new StringEntity(request, HTTP.UTF_8);
            DefaultHttpClient client = new DefaultHttpClient();
            HttpPost httpPost = new HttpPost(new URI("http://xxxxxxxx.com/Storefront.asmx"));

            httpPost.addHeader("Content-Type", "text/xml; charset=utf-8");
            httpPost.addHeader("SOAPAction", soapAction);

            httpPost.setEntity(se);
            HttpResponse response = client.execute(httpPost);
            int responseStatusCode = response.getStatusLine().getStatusCode();
            Log.d(TAG, "HTTP Status code:"+responseStatusCode);
            if(responseStatusCode>=200 && responseStatusCode<300){
                //we got the success response from server. Now retrieve the value and go for usage.
                String responseStr = EntityUtils.toString(response.getEntity());
                //use this responseStr to parse with pullparsers or any
                Log.d("Response", "Response:: "+ responseStr);
                return responseStr;
            }
        }catch(Exception e){
            //Write the proper catch blocks for exceptions
            Log.e("Response Exception" , e.getMessage()+"",e);
        }
        return null;
    }
0 голосов
/ 11 июня 2012

ИСПОЛЬЗОВАНИЕ Restful webservice client

Как позвонить на веб-сервис Restful в Android

Также смотрите видео по Google I / O на отдыхающих клиентах. http://www.youtube.com/watch?feature=player_embedded&v=xHXn3Kg2IQE

0 голосов
/ 18 июля 2011

Что значит медленный? Это делает запрос http, а затем анализирует ответ. Вы должны сделать это в асинхронной задаче. Использование памяти будет зависеть от ответа, который вы получите. Может быть, вы просите слишком много. Смотрите вики о том, как отлаживать!

0 голосов
/ 15 июля 2011

Android не предоставляет встроенную поддержку SOAP. Вы должны предоставить готовую поддержку, используя KSOAP2 или аналогичные библиотеки

Для других идей, проверьте эту ссылку

Как вызвать веб-сервис SOAP на Android

Надеюсь, это поможет

...