44k*_*rma 5 android json http-post multipartentity apache-httpclient-4.x
我可以使用StringEntity发布json对象
httppost.setEntity(newStringEntity(obj.toString())); HttpResponse response = httpclient.execute(httppost);
但我必须发布一个文件和json数据,我发现很多Answers使用MultipartEntity但它已被弃用,请建议我使用MultipartEntityBuilder的任何教程或示例代码,谢谢
这是我的代码
Thread t = new Thread(new Runnable() {
@Override
public void run() {
JSONObject jsonobject = null;
String requestURL = "URL";
try {
jsonobject = new JSONObject("{\"first\": \"Test\",\"last\": \"User\",\"name\": \"Test
User\",\"email\": \"tr0121345899@gmail.com\",\"birthdate\": \"1984-01-01\",\"Account\": {\"username\": \"t1r0123425899\",\"password\": \"testuser1234567899\"},\"Address\": {\"postal_code\": \"11230\",\"state_or_province\": \"NY\",\"country\": \"US\"}}");
} catch (JSONException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(requestURL);
httppost.addHeader("Content-Type", "application/json");
httppost.addHeader("X-ConsumerApiClient","0f8f0a024d6344e429f5ee96aa66fbfb5c3973b5");
httppost.addHeader("X-ConsumerApiSignature",
"qmt8aEAGRQUvldkDnHw8zgn1kRYuXRDwvmo3TpWlCtE=");
MultipartEntityBuilder multipartEntity = MultipartEntityBuilder.create();
multipartEntity.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
multipartEntity.addPart("file", new FileBody(new
File(fileName)));
multipartEntity.addPart("Person", jsonobject.toString());
httppost.setEntity(multipartEntity.build());
try {
HttpResponse response = httpclient.execute(httppost);
Log.d("status", "" + response.getStatusLine());
Log.d("response",EntityUtils.toString(response.getEntity()));
} catch (ClientProtocolException e) {
} catch (IOException e) {
}
}
});
t.start();
Run Code Online (Sandbox Code Playgroud)
我找到了解决方案,我们可以像下面这样拆分 json 对象并作为键值发送
multipartEntity.addPart("data[Asset][file]", new FileBody(file,
ContentType.APPLICATION_OCTET_STREAM, "filename.png"));
multipartEntity.addTextBody("data[Person][first]", "kk");
multipartEntity.addTextBody("data[Person][email]",
"rajesh123458@gmail.com");
multipartEntity.addTextBody("data[Person][birthdate]",
"1984-01-01");
multipartEntity.addTextBody("data[Person][Account][username]",
"savita123458");
multipartEntity.addTextBody("data[Person][Account][password]",
"testuser12345678");
httppost.setEntity(multipartEntity.build());
try {
HttpResponse response = httpclient.execute(httppost);
Log.d("status", response.getStatusLine().toString());
Log.d("data", EntityUtils.toString(response.getEntity()));
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace(); // TODO Auto-generated catch block
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4835 次 |
| 最近记录: |