1

Webサービスの呼び出しに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
        }

デバイスとネットワークでテストしているとき、コードは正常に実行されています。私はそれを別の場所と別のWifiと3gネットワークでテストしました。正常に動作しています。クライアントが自分のデバイスとWifiネットワークを使用してテストした場合、それも正常に機能します。しかし、彼が3Gネットワ​​ークを使用して同じことを試みたとき、それは与えていますXmlPullParserException期待:START_TAG {http://schemas.xmlsoap.org/soap/envelope/} Envelopre(position:START_TAG @ 1:6 in 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
        }
4

0 に答える 0