Изчакване на операцията

Имам тази странна грешка: дори бях поставил неограничен таймаут, опитвайки се да я разреша. Казвам, че това е странно, защото преди работеше добре, но сега не работи и не знам причината. Грешката:

09-05 22:40:04.930: W/IInputConnectionWrapper(820): showStatusIcon on inactive InputConnection
09-05 22:43:26.901: E/ServicioRest(881): Error en listar!
09-05 22:43:26.901: E/ServicioRest(881): java.net.SocketException: The operation timed out
09-05 22:43:26.901: E/ServicioRest(881):    at org.apache.harmony.luni.platform.OSNetworkSystem.connectStreamWithTimeoutSocketImpl(Native Method)
09-05 22:43:26.901: E/ServicioRest(881):    at org.apache.harmony.luni.platform.OSNetworkSystem.connect(OSNetworkSystem.java:115)
09-05 22:43:26.901: E/ServicioRest(881):    at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:244)
09-05 22:43:26.901: E/ServicioRest(881):    at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:533)
09-05 22:43:26.901: E/ServicioRest(881):    at java.net.Socket.connect(Socket.java:1055)
09-05 22:43:26.901: E/ServicioRest(881):    at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:119)
09-05 22:43:26.901: E/ServicioRest(881):    at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:143)
09-05 22:43:26.901: E/ServicioRest(881):    at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
09-05 22:43:26.901: E/ServicioRest(881):    at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
09-05 22:43:26.901: E/ServicioRest(881):    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:348)
09-05 22:43:26.901: E/ServicioRest(881):    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
09-05 22:43:26.901: E/ServicioRest(881):    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
09-05 22:43:26.901: E/ServicioRest(881):    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
09-05 22:43:26.901: E/ServicioRest(881):    at com.example.interviewhelpers.ClientDetailActivity.onCreateView(ClientDetailActivity.java:72)
09-05 22:43:26.901: E/ServicioRest(881):    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:870)
09-05 22:43:26.901: E/ServicioRest(881):    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1080)
09-05 22:43:26.901: E/ServicioRest(881):    at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:622)
09-05 22:43:26.901: E/ServicioRest(881):    at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1416)
09-05 22:43:26.901: E/ServicioRest(881):    at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:505)
09-05 22:43:26.901: E/ServicioRest(881):    at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1129)
09-05 22:43:26.901: E/ServicioRest(881):    at android.app.Activity.performStart(Activity.java:3781)
09-05 22:43:26.901: E/ServicioRest(881):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2636)
09-05 22:43:26.901: E/ServicioRest(881):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
09-05 22:43:26.901: E/ServicioRest(881):    at android.app.ActivityThread.access$2300(ActivityThread.java:125)
09-05 22:43:26.901: E/ServicioRest(881):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
09-05 22:43:26.901: E/ServicioRest(881):    at android.os.Handler.dispatchMessage(Handler.java:99)
09-05 22:43:26.901: E/ServicioRest(881):    at android.os.Looper.loop(Looper.java:123)
09-05 22:43:26.901: E/ServicioRest(881):    at android.app.ActivityThread.main(ActivityThread.java:4627)
09-05 22:43:26.901: E/ServicioRest(881):    at java.lang.reflect.Method.invokeNative(Native Method)
09-05 22:43:26.901: E/ServicioRest(881):    at java.lang.reflect.Method.invoke(Method.java:521)
09-05 22:43:26.901: E/ServicioRest(881):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
09-05 22:43:26.901: E/ServicioRest(881):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
09-05 22:43:26.901: E/ServicioRest(881):    at dalvik.system.NativeStart.main(Native Method)

Това е методът, извикващ уеб услугата: Последният ред е мястото, където eclipse ми казва, че възниква проблемът.

public static final String ruta = "http://10.0.0.2:2731/Api/Usuario";

        HttpParams httpParameters = new BasicHttpParams();
        HttpConnectionParams.setConnectionTimeout(httpParameters, 0);
        HttpConnectionParams.setSoTimeout(httpParameters, 0);
        HttpConnectionParams.setTcpNoDelay(httpParameters, true);

        HttpClient httpClient = new DefaultHttpClient(httpParameters);
        HttpGet del = new HttpGet(ruta + "s");
        del.setHeader("content-type", "application/json");

        try {
            HttpResponse resp = httpClient.execute(del);

person Sterling Diaz    schedule 06.09.2012    source източник
comment
URL адресът '10.0.0.2:2731/Api/Usuario' показва ли изобщо някакъв отговор, когато опитвате ли да го прегледате през уеб браузър? Също така, 'HttpGet del = new HttpGet(ruta + s);' изглежда, че свързва 's' в края на URL низа. И така, операторът води до 'HttpGet del = new HttpGet(10.0.0.2:2731/Api/Usuarios);' Това ли искаш да бъде? И сигурни ли сте, че искате да зададете тип съдържание на 'application/json', особено след като вашата заявка е 'GET' заявка?   -  person sandyiscool    schedule 06.09.2012
comment
На всички въпроси е „да“. Първият: този url в браузъра не работи, но това е за емулатора. С localhost и 's' свързани, мога да видя съдържанието. И тъй като това, което услугата ми дава, е json, затова използвам този тип съдържание   -  person Sterling Diaz    schedule 06.09.2012
comment
Когато казвате „URL адресът в браузъра не работи“, имате ли предвид, че и времето за изчакване? Или показва някакво съобщение за грешка? Второ, типът съдържание на данните, които сървърът ви връща, е зададен в заглавката „тип съдържание“ на отговора. Най-вероятно не изпращате json данни в заявката. Така че обикновено не задавате това.   -  person sandyiscool    schedule 06.09.2012
comment
Не, искам да кажа, че не работи, написано по този начин: „10.0.0.2:2731/Api/Usuarios“, но в емулатора трябва да работи. В браузъра работи по следния начин: 'localhost:2731/Api/Usuarios'. Добре. Благодаря за информацията относно типа съдържание.   -  person Sterling Diaz    schedule 06.09.2012


Отговори (1)


Вие сте дали стойността на времето за изчакване като 0 във вашия код. Вместо 0 използвате стойност, по-голяма от 5000 (милисекунди). Т.е. HttpConnectionParams.setConnectionTimeout(httpParameters, 5000); HttpConnectionParams.setSoTimeout(httpParameters, 5000);

person SSS    schedule 06.09.2012
comment
Стойност 0 показва безкраен таймаут. - person sandyiscool; 06.09.2012
comment
Сега ми даде друга грешка.09-05 23:47:39.550: E/ServicioRest(274): org.apache.http.conn.ConnectTimeoutException: Времето за свързване към /10.0.0.2:2731 изтече - person Sterling Diaz; 06.09.2012
comment
погледнете този въпрос stackoverflow.com/questions/6705170 / - person SSS; 06.09.2012
comment
Точно така sandyiscool. Използвах го, за да не изтече времето за изчакване, за да не ми даде грешката за изчакване. - person Sterling Diaz; 06.09.2012
comment
@user1228807 : Разбирам, че възнамерявате да настроите времето за изчакване никога да не изтича. Просто наблягах на това. - person sandyiscool; 06.09.2012
comment
Този пост не го прочетох Ума, въпреки че прочетох много подобни теми. Благодаря, нека опитам. - person Sterling Diaz; 06.09.2012
comment
За да разберете дали грешката при изчакване е поради липса на време за зареждане на данните. С 0 знам, че проблемът е друг. И затова съм тук в момента. - person Sterling Diaz; 06.09.2012