【发布时间】:2013-03-19 06:30:36
【问题描述】:
我正在开发这个 android 应用程序,它基本上将图像上传到 web 服务。 我有一个异步任务,我使用以下代码将文件发送到服务器:
protected Boolean doInBackground(byte[]... params) {
HttpURLConnection connection = getConnection();
BufferedOutputStream out = new BufferedOutputStream(connection.getOutputStream());
Log.d("OutputStream", "stream created, about to write");
out.write(params[0]);
Log.d("OutputStream", "all bytes written");
out.close();
}
当然,这段代码被包装在一个 try catch 中,捕获 IOExceptions 等。 问题是,当我中断连接 after 我看到第一个日志文本时,永远不会抛出异常,或者只有在很长一段时间(大约 20 分钟左右)之后才会抛出异常,这不会产生任何完全有感觉。
HttpURLConnection 是这样设置的:
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("POST");
urlConnection.setRequestProperty("Content-Type", this.contentType);
urlConnection.setRequestProperty("User-Agent", String.format("custom-user-agent/%d", R.integer.version_code));
urlConnection.addRequestProperty("SessionID", this.sessionID);
urlConnection.setDoOutput(true);
urlConnection.setConnectTimeout(30000);
urlConnection.setReadTimeout(30000);
urlConnection.setChunkedStreamingMode(0);
urlConnection.setUseCaches(false);
urlConnection.connect();
有趣的是,这只发生在中断 EDGE/3G 连接时。当我中断 wifi 连接时,立即抛出异常(当然,这更方便)。
对此有任何想法吗?
【问题讨论】:
标签: android post timeout httpurlconnection 3g