Transform “Java. Net. Protocolexception: unexpected status line”, anyone?
•
Java
My Android application crashed the following stack trace, but it worked well when I tried it from the desktop rest client Who knows what the problem may be?
04-23 16:00:50.449 27917-27983/com.iproperty.android.apps.irealtor D/Ireal_IrealtorClient﹕ ---> HTTP GET http://beta2.irealtor.api.iproperty.com.my/Listing?pageSize=10000&orderby=1&order=-1 04-23 16:00:50.449 27917-27983/com.iproperty.android.apps.irealtor D/Ireal_IrealtorClient﹕ If-Modified-Since: 1398235278243 04-23 16:00:50.449 27917-27983/com.iproperty.android.apps.irealtor D/Ireal_IrealtorClient﹕ User-Agent: Android/0.0.20 04-23 16:00:50.449 27917-27983/com.iproperty.android.apps.irealtor D/Ireal_IrealtorClient﹕ Accept: application/json 04-23 16:00:50.449 27917-27983/com.iproperty.android.apps.irealtor D/Ireal_IrealtorClient﹕ Authorization: WFdSeW8vOTJ1Z3BoQlBJMk53VGpaekZRY2pCd1pYSlVXUT090 04-23 16:00:50.449 27917-27983/com.iproperty.android.apps.irealtor D/Ireal_IrealtorClient﹕ ---> END HTTP (0-byte body) 04-23 16:00:50.549 27917-27983/com.iproperty.android.apps.irealtor D/Ireal_IrealtorClient﹕ ---- ERROR http://beta2.irealtor.api.iproperty.com.my/Listing?pageSize=10000&orderby=1&order=-1 04-23 16:00:50.549 27917-27983/com.iproperty.android.apps.irealtor D/Ireal_IrealtorClient﹕ java.net.ProtocolException: Unexpected status line: {"Data":[],"CustomStatusCode":200,"Status":"success"}HTTP/1.1 200 OK at com.squareup.okhttp.internal.http.StatusLine.<init>(StatusLine.java:38) at com.squareup.okhttp.internal.http.httpconnection.readResponse(httpconnection.java:150) at com.squareup.okhttp.internal.http.HttpTransport.readResponseHeaders(HttpTransport.java:99) at com.squareup.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:595) at com.squareup.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:381) at com.squareup.okhttp.internal.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:328) at com.squareup.okhttp.internal.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:493) at retrofit.client.UrlConnectionClient.readResponse(UrlConnectionClient.java:71) at retrofit.client.UrlConnectionClient.execute(UrlConnectionClient.java:38) at retrofit.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:358) at retrofit.RestAdapter$RestHandler.invoke(RestAdapter.java:284) at $Proxy0.syncProperties(Native Method) at com.iproperty.android.apps.irealtor.sync.SyncHelper.performSync(SyncHelper.java:210) at com.iproperty.android.apps.irealtor.sync.SyncAdapter.onPerformSync(SyncAdapter.java:82) at android.content.AbstractThreadedSyncAdapter$SyncThread.run(AbstractThreadedSyncAdapter.java:259) 04-23 16:00:50.549 27917-27983/com.iproperty.android.apps.irealtor D/Ireal_IrealtorClient﹕ ---- END ERROR /**Sample code by using BasicHttpClient*/ BasicHttpClient httpClientTest = new BasicHttpClient(); httpClientTest.addHeader("If-Modified-Since","1398312582192"); httpClientTest.addHeader("Authorization","WFdSeW8vOTJ1Z3BoQlBJMk53VGpaekZRY2pCd1pYSlVXUT090"); httpClientTest.addHeader("User-Agent","Android/0.0.20"); httpClientTest.addHeader("Accept","application/json"); HttpResponse responseTest = httpClientTest.get("http://beta2.irealtor.api.iproperty.com.my/Listing?pageSize=100&orderby=1&order=-1",null); final int statusTest = responseTest.getStatus(); // here i get 204,because i make server return 204 then there is nothing. String body responseTest.getAsString() // here i get empty which is correct.
Solution
Something caused a problem with the length of the response body of the previous HTTP request and damaged the pooled connection
The previous request is interpreted by okhttp as having no body, but it has this body:
{"Data":[],"Status":"success"}
It may be an error in the server or in okhttp, depending on the header and code sent by the previous URL If you can paste this failed request, we can find its error!
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
二维码