基本的に画像をWebサービスにアップロードするこのAndroidアプリケーションを開発しています。次のコードを使用して、ファイルをサーバーに送信する asynctask があります。
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();
}
もちろん、このコード ブロックは、IOExceptions などをキャッチする try catch 内にラップされています。数分程度)、これはまったく意味がありません。
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接続を中断すると、すぐに例外がスローされます(もちろん、これははるかに便利です).
これについて何か考えはありますか?