特定の URL に画像をアップロードする必要があります。従来の HTTP リクエストの構築は次のようになります。
HttpClient httpClient = new DefaultHttpClient();
HttpContext localContext = new BasicHttpContext();
HttpPost httpPost = new HttpPost(
getString(R.string.WebServiceURL)
+ "/cfc/iphonewebservice.cfc?method=uploadPhoto");
MultipartEntity entity = new MultipartEntity(
HttpMultipartMode.BROWSER_COMPATIBLE);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
bitmap.compress(CompressFormat.JPEG, 100, bos);
byte[] data = bos.toByteArray();
entity.addPart("photoId", new StringBody(getIntent()
.getStringExtra("photoId")));
entity.addPart("returnformat", new StringBody("json"));
entity.addPart("uploaded", new ByteArrayBody(data,
"myImage.jpg"));
entity.addPart("photoCaption", new StringBody(caption.getText()
.toString()));
httpPost.setEntity(entity);
httpPost.setEntity()
つまり、メソッドを使用して画像をリクエストに入れる必要があるとします。
Volley ライブラリを使用してリクエストを作成する方法は既に知っています。たとえば、次のように、クラスでgetBody
メソッドをオーバーライドする必要があります。com.android.volley.Request
public byte[] getBody() throws AuthFailureError {
JsonObject json = new JsonObject();
Set<String> keySet = mParameters.keySet();
for (String key : keySet) {
json.addProperty(key, mParameters.get(key));
}
return json.toString().getBytes();
}
Request
問題は、クラスにエンティティを設定する方法ですか? のような方法はありませんsetEntity()
。