我得到EOFException
當我所說的REST API。我知道它說響應爲空。但它不應該。我在iOS應用程序中使用相同的API沒有任何問題。獲取java.io.EOFException的使用HttpURLConnection的
這裏是我的代碼:
try {
url = new URL(baseUrl);
}
// Thrown when URL could not be parsed
catch (MalformedURLException me) {
Log.e(TAG, "URL could not be parsed. URL : " + baseUrl, me);
}
try {
// System.setProperty("http.keepAlive", "false");
// Set connection properties
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod(method);
urlConnection.setConnectTimeout(TIMEOUT * 1000);
urlConnection.setChunkedStreamingMode(0);
urlConnection.setRequestProperty("Accept", "*/*");
urlConnection.setRequestProperty("Content-type", "application/x-www-form-urlencoded");
// urlConnection.setRequestProperty("Connection", "close");
if (method.equals("POST") || method.equals("PUT")) {
// Set to true when posting data
urlConnection.setDoOutput(true);
// Write data to post to connection output stream
OutputStream out = urlConnection.getOutputStream();
out.write(postParameters.getBytes("UTF-8"));
Log.d(TAG, "Data written to output stream.");
}
// urlConnection.connect();
try {
// Get response
in = new BufferedInputStream(urlConnection.getInputStream());
} catch (IOException e) {
Log.e(TAG,
"Exception in getting connection input stream. Input stream : "
+ in, e);
}
Log.d(TAG, "content length : " + urlConnection.getContentLength());
Log.d(TAG, "content type : " + urlConnection.getContentType());
// Read the input stream that has response
statusCode = urlConnection.getResponseCode();
Log.d(TAG, "Status code : " + statusCode);
if (statusCode >= 400) {
Log.e(TAG, "Error stream : " + urlConnection.getErrorStream().toString());
}
// Passing input stream to a function.
readStream(in, statusCode);
} catch (ProtocolException pe) {
Log.e(TAG,
"Make sure HTTP method is set before connecting to URL. Line : "
+ getLineNumber(), pe);
} catch (IllegalStateException ie) {
Log.e(TAG,
"Set connection properties before connecting to URL. Line : "
+ getLineNumber(), ie);
}
// Thrown when connecting to URL times out
catch (SocketTimeoutException se) {
Log.e(TAG, "Timeout before connecting to URL : " + baseUrl
+ ". Line : " + getLineNumber(), se);
} catch (IOException e) {
Log.e(TAG, "Exception while connecting to URL : " + baseUrl, e);
} finally {
urlConnection.disconnect();
}
我曾嘗試下面的東西,但沒有奏效。論文在代碼中被註釋掉。 :
1)System.setProperty("http.keepAlive", "false");
2)urlConnection.setRequestProperty("Connection", "close");
3)urlConnection.connect();
語句Log.d(TAG, "Status code : " + statusCode);
是沒有得到記錄。通常它工作。
logcat的屏幕截圖: