I'm attempting to write a simple API management class and running into an issue when using HttpUrlConnection to POST content on a Galaxy Nexus recently upgraded to 4.2. In effect, attempting to post content fails on the first attempt with an EOFException:
java.io.EOFException > at libcore.io.Streams.readAsciiLine(Streams.java:203) > at libcore.net.http.HttpEngine.readResponseHeaders(HttpEngine.java:573) > at libcore.net.http.HttpEngine.readResponse(HttpEngine.java:821) > at > libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:283) > at > libcore.net.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:495) > at com.murts.network.APIClient.post(APIClient.java:126) > at com.murts.network.APIManager$1.doInBackground(APIManager.java:49) The second attempt to post (with the same data) will work fine, as will every alternate attempt to do so after that. The code is as follows: URL url = new URL(urlString); > connection = (HttpURLConnection) url.openConnection(); > connection.setUseCaches(false); > connection.setDoOutput(true); > connection.setRequestProperty("Content-type", "application/json; > charset=utf-8"); > connection.setFixedLengthStreamingMode(postContent.getBytes().length); > > output = connection.getOutputStream(); > output.write(postContent.getBytes()); > if (connection.getResponseCode() / 100 == 2) { > Ln.d("Seemed to work: " + connection.getResponseCode()); > return new NetworkResponse(NetworkStatus.OKAY, > connection.getResponseCode(), ""); > } else { > String errorResponse = new String(readStream(connection.getErrorStream())); > Ln.e(TAG , "Error: " + errorResponse); > > String statusLine; > if (connection.getHeaderFields().get(null) != null && (statusLine = > connection.getHeaderFields().get(null).get(0)) != null && > TextUtils.split(statusLine, " ").length > 2) { > int potentialStatusCode = Integer.parseInt(TextUtils.split(statusLine, " > ")[1]); > Ln.d("Parsed out empty response to reveal: " + potentialStatusCode); > return new NetworkResponse(NetworkStatus.OKAY, potentialStatusCode, ""); > } > } > } catch (IOException e) { > Ln.e(e); > } finally { > if (connection != null) { > connection.disconnect(); > } > } Testing on a 4.2 image on an emulator seems to work well, as does testing on previous versions of Android on an emulator (2.3+). I can't see any immediate issues with the code (it may looks hackish in parts, but that's due more to being churned over thanks to endless frustration with this issue) but perhaps I've missed something? Anyone have any thoughts with this, on either a Galaxy Nexus in general or with 4.2 specifically? Thanks in advance for any assistance (or even thoughts at all.) Ryan -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en