我需要将Android中的图像与其他数据一起上传到JSON Web服务。问题是我无法立刻找到办法。 这是我用来发出请求的代码:
public JSONObject makeHttpRequest(String url, String method,
List<NameValuePair> params) throws JSONException {
try {
if (method == "POST") {
HttpPost httpPost = new HttpPost(url);
httpPost.setEntity(new UrlEncodedFormEntity(params));
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
} else if (method == "GET") {
//...
}
} catch (Exception e) {
//...
}
//...
// Parse response and return json object
return null;
}
以下是我用来填充params参数的代码:
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("first_name", "John"));
params.add(new BasicNameValuePair("last_name", "Doe"));
params.add(new BasicNameValuePair("image", ??));
我尝试过使用SDCard中的图像路径没有结果,图像也是一个字符串,下面的代码没有结果。
Bitmap bitmap = BitmapFactory.decodeFile(group.getImgPath());
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
byte[] b = baos.toByteArray();
String strBitMap = Base64.encodeToString(b, Base64.DEFAULT);
params.add(new BasicNameValuePair("image", strBitMap));
当我使用mutlipart实体时,我不知道如何设置params对象,只设置图像。问题是我需要立即上传包括图像在内的所有数据。
任何解决方案? 提前谢谢。
答案 0 :(得分:1)
尝试创建一个多部分实体,并将它们添加为键值对,如下所示:
MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
//for strings
entity.addPart("first_name", new StringBody(nameValuePairs.get(0).getValue()));
entity.addPart("last_name", new StringBody(nameValuePairs.get(1).getValue()));
//for image
entity.addPart("image", new FileBody(new File (nameValuePairs.get(2).getValue())));
然后做
httpPost.setEntity(entity);
执行前。