【发布时间】:2012-08-30 20:13:47
【问题描述】:
我有一个奇怪的错误:我什至设置了无限超时来尝试解决它。我说这很奇怪,因为它以前工作得很好,但现在,它不起作用,我不知道原因。错误:
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)
这是调用web服务的方法:最后一行是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);
【问题讨论】:
-
当您尝试通过网络浏览器浏览 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”请求时?
-
所有问题都是肯定的。第一个:浏览器中的那个url不起作用,但那是模拟器的。使用 localhost 和 's' 连接,我可以看到内容。而且因为服务给我的是 json,这就是我使用那种内容类型的原因
-
当您说“浏览器中的网址不起作用”时,您的意思是它也超时了吗?或者它是否显示任何错误消息?其次,服务器返回给您的数据的内容类型在响应的“内容类型”标头中设置。您很可能没有在请求中发送 json 数据。因此,您通常不会设置它。
-
不,我的意思是这样写的:'10.0.0.2:2731/Api/Usuarios' 但在模拟器中,它应该可以工作。在浏览器中以这种方式工作:'localhost:2731/Api/Usuarios'。好的。感谢您提供有关内容类型的信息。
标签: android web-services timeout httpresponse socketexception