Возможно с KSOAP2 в сети 3G: XmlPullParserException - PullRequest
1 голос
/ 11 ноября 2011

Я использовал KSOAP2 для вызова веб-службы.Вот мой код:

SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(
                SoapEnvelope.VER11);
        soapEnvelope.dotNet = true;
        soapEnvelope.setOutputSoapObject(request);

        HttpTransportSE aht = new HttpTransportSE(URL);

        try {

            aht.call(SOAP_ACTION, soapEnvelope);

            SoapObject result;
            try{
                result = (SoapObject) soapEnvelope.getResponse();
            }catch (ClassCastException e) {
                result = (SoapObject)soapEnvelope.bodyIn; 
            }

            // parse the SOAP object


        } catch (Exception e) {
            e.printStackTrace(); // here it is throwing  XmlPullParserException in a #G network
        }

Код работает нормально, когда мы тестируем его на нашем устройстве и в сети.Я проверил это в другом месте и другой сети Wi-Fi и 3G.Работает нормально.Когда мой клиент проверил его, используя свое устройство и сеть Wi-Fi, он также работает нормально.Но когда он попробовал то же самое с использованием сети 3G, он дает XmlPullParserException ( ожидаемое: START_TAG {http://schemas.xmlsoap.org/soap/envelope/}Envelopre (позиция: START_TAG @ 1: 6 в java.io.InputStreamReader ). Что может бытьпроблема, связанная с этим типом сети SocketException.

Здесь я хотел бы упомянуть, что перед вызовом SOAP я проверил состояние сети, используя следующий код:

if (connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE)
                .getState() == NetworkInfo.State.CONNECTED
                || connectivityManager.getNetworkInfo(
                        ConnectivityManager.TYPE_WIFI).getState() == NetworkInfo.State.CONNECTED) {
            // we are connected to a network
            //go for SOAP call
        }
...