1

Android v4.0.3を使用してアプリケーションでWebサービスを使用していますが、 HttpTransportseショーに到達しSocketTimeoutExceptionても応答がありません。同じコードがandroid.v.2.2で完全に機能しています

logcat で次の例外が発生しました

05-10 11:18:38.245: W/System.err(849): java.net.SocketTimeoutException
05-10 11:18:38.255: W/System.err(849):  at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:130)

KSoap jar
---------
KSoap2 library android:2.5.2.jar

ここにコードがあります

public class busTravellDetailslistActivity extends Activity {
/** Called when the activity is first created. */
Button b;
EditText rteid,trvname,bustyp,deptm,arvtm;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    b=(Button) findViewById(R.id.button1);
    b.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {


            SoapObject request = new SoapObject("http://***********/WS2","TestRouteDataMobile");
                //System.out.println("req count:"+request.getPropertyCount()); 
            SoapSerializationEnvelope envelope=new SoapSerializationEnvelope(SoapEnvelope.VER11);

              envelope.setOutputSoapObject(request);

              HttpTransportSE transport = new HttpTransportSE("http://**********/RouteSearchService.asmx");//namespace
                try {

                    transport.call("http://***********/TestRouteDataMobile",envelope);
                    System.out.println("aftr call");
                } catch (SocketTimeoutException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (XmlPullParserException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

                    SoapObject response;
                    try {
                        response = (SoapObject)(envelope.getResponse());

                        Log.i("Response",response.toString());




                    } catch (SoapFault e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }

            // TODO Auto-generated method stub

                }
    });
    }
}
4

1 に答える 1

0

この問題を解決するのにほぼ 2 ~ 3 時間を費やしましたが、解決策は非常に簡単でした。この問題は、間違った IP で Web サービスにアクセスしている場合、またはサービスに問題がある場合に発生します。ただし、これら 2 つを除き、注意が必要なことが 1 つあります。Web サービスが Http でホストされている場合は を使用HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);し、Web サービスが https である場合は を使用する必要がありますHttpsTransportSE aht = new KeepAliveHttpsTransportSE(IP, 443,SERVICEPATH, 25000);。お役に立てば幸いです。

于 2013-03-08T07:52:31.657 に答える