ユーザーが HttpPost メソッドを使用して画像をアップロードできるようにするアプリに取り組んでいます。私は MultipartEntity を使用しているため、ライブラリ apache-mime4j-0.6.1.jar、httpclient-4.3.1.jar、httpcore-4.3.1.jar、および httpmime-4.2.1.jar をアプリに追加しました。私のアップロードコードは以下のようなものです:
public String uploadFile() throws Exception
{
String result = "";
try
{
HttpResponse response = null;
HttpClient httpClient = new DefaultHttpClient();
HttpPost request = new HttpPost(_url);
request.setHeader("Accept", "application/json");
File file=new File(filePath);
String fileName=file.getName();
MultipartEntity imageEntity=new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE,null,Charset.forName("UTF-8"));
imageEntity.addPart("imageName", new StringBody(fileName));
imageEntity.addPart("image", new FileBody(file, "application/octet-stream"));
request.setEntity(imageEntity);
response = httpClient.execute(request);
InputStream dataStream = response.getEntity().getContent();
BufferedReader dataReader = new BufferedReader(new InputStreamReader(dataStream));
String line = "";
while ((line = dataReader.readLine()) != null)
result+=line;
}
catch (Exception e)
{
}
return result;
}
サーバーから応答を受け取りますが、Web サービス コードで Request.Files にファイルがありません。行を変更すると:
MultipartEntity imageEntity=new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE,null,Charset.forName("UTF-8"));
に
MultipartEntity imageEntity=new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
アプリは長時間 (約 3 ~ 4 分) 処理中であり、エラーがスローされます。これは、画像を追加すると発生します。FileBody を使用せずに StringBody のみを送信すると、サーバーから応答が返され、Web サービス コードの Request.Files がファイル カウントを正しく返します。この問題を修正して画像を正しくアップロードするにはどうすればよいですか? なにか提案を?