Исключение SocketTimeout при вызове веб-службы

Я использую веб-сервис в своем приложении с Android v4.0.3, но когда я добрался до 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

                }
    });
    }
}

person Nijosusan    schedule 10.05.2012    source источник
comment
хорошо, у меня была такая же проблема, просто вам нужно очистить переменные после ответа.   -  person Lucifer    schedule 10.05.2012
comment
Я получил ответ, когда я выхожу из проекта и сам спрашиваю, какой эмулятор должен запускаться. Но когда я изменил эмулятор из свойств и androidmanifest, показывается то же исключение ... почему это происходит так ?? или есть какие-то проблемы что я сделал ??   -  person Nijosusan    schedule 10.05.2012
comment
вы строили и чистили после изменений?   -  person Lucifer    schedule 10.05.2012
comment
Я сделал то же самое, но до сих пор ..   -  person Nijosusan    schedule 11.05.2012
comment
нужно решение от кого-нибудь еще ..   -  person Nijosusan    schedule 11.05.2012
comment
не могли бы вы загрузить код после внесенных вами изменений   -  person Lucifer    schedule 11.05.2012


Ответы (1)


Я потратил почти 2-3 часа на решение этой проблемы, и решение было очень простым. Эта проблема возникает, когда вы обращаетесь к веб-сервису с неправильным IP-адресом или у сервиса есть проблемы. Но, кроме этих двух, есть одна вещь, с которой вам нужно быть осторожными: если веб-служба размещена на Http, вы должны использовать HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);, а если ваша веб-служба находится на https, тогда используйте HttpsTransportSE aht = new KeepAliveHttpsTransportSE(IP, 443,SERVICEPATH, 25000);. Надеюсь поможет вам.

person JNI_OnLoad    schedule 08.03.2013