次のコードは、ファイルをサーバーにアップロードするために使用されています。
public static boolean uploadFile(String serverUrl, String filePath) {
boolean status = false;
try {
File file = new File(filePath);
HttpParams httpParameters = new BasicHttpParams();
int timeoutConnection = 3000;
HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection);
// Set the default socket timeout (SO_TIMEOUT)
// in milliseconds which is the timeout for waiting for data.
int timeoutSocket = 5000;
HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket);
HttpClient httpClient = new DefaultHttpClient(httpParameters);
HttpPost postRequest = new HttpPost(serverUrl);
FileBody bin = new FileBody(file);
MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.STRICT);
reqEntity.addPart(IShipdocsMobileConstants.CUSTOM_FILE_TAG, bin);
postRequest.setEntity(reqEntity);
HttpResponse response = httpClient.execute(postRequest);
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
status = true;
}
}
catch (Exception e) {
status = false;
}
return status;
}
ファイルがファイルのアップロードを開始している間に接続がない場合は例外がスローされますが、ファイルがすでにアップロードを開始している場合は例外はスローされず、しばらくしてから (おそらく 50% のアップロード後)、接続が失われます。
現在、アップロードには WiFi と GPRS で有効化された SIM の両方を使用しています。
例外を取得するために上記のコードに追加する必要があるその他のパラメーター。
ヒント/提案は大歓迎です。