我必须使用MultipartEntity发布这样的json。
if ((viewFlags & ENABLED_MASK) == DISABLED) {
if (event.getAction() == MotionEvent.ACTION_UP && (mPrivateFlags & PFLAG_PRESSED) != 0) {
setPressed(false);
}
// A disabled view that is clickable still consumes the touch
// events, it just doesn't respond to them.
return (((viewFlags & CLICKABLE) == CLICKABLE || (viewFlags & LONG_CLICKABLE) == LONG_CLICKABLE));
}
我不知道如何在发布multipartEntity对象后制作这样的结构,到目前为止我尝试过的是。
{
arrayName":[
{
// object one
},
{
// object two
}]
}
有什么办法让我可以制作MultipartEntity数组或什么?
注意:对于单独发布一个json对象,它可以正常工作。我只想学习如何使用MultipartEntity发布JSONarry格式。
答案 0 :(得分:0)
您必须将json数组转换为字符串。
使用Gson Library。 Gson
现在你必须像这样使用。 无论你建模的是什么
ArrayList<CustomClass> objects = new ArrayList<>();
objects.add(object);
objects.add(object);
然后只使用gson。
String stringToPost = new Gson().toJson(objects);
然后将此字符串添加多部分为
Stringbody
服务器端将String反序列化为Json数组。
您也可以在多部分中将文件添加为 filebody 。
答案 1 :(得分:0)
这是使用MultipartEntity上传图片和JSONArray的示例 - lib:org.apache.http.entity.mime
List students = getStudentList();
MultipartEntity studentList = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
for(int i=0; i<students.size();i++){
try {
studentList.addPart("studentList[][name]", new StringBody(String.valueOf(students.get(i).getName())));
studentList.addPart("studentList[][addmission_no]", new StringBody(String.valueOf(students.get(i).getAddmissionNo)));
studentList.addPart("studentList[][gender]", new StringBody(String.valueOf(students.get(i).getGender)));
File photoImg = new File(students.get(i).getImagePath());
studentList.addPart("studentList[][photo]",new FileBody(photoImg,"image/jpeg"));
}catch(Exception e){
e.getMessage();
}
}
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(URL);
post.addHeader("X-Auth-Token", mUserToken);
post.setEntity(studentList);
org.apache.http.HttpResponse response = null;
try {
response = client.execute(post);
} catch (IOException e) {
e.printStackTrace();
}
HttpEntity httpEntity = response.getEntity();
JSONObject myObject;
try {
String result = EntityUtils.toString(httpEntity);
// do your work
} catch (IOException e) {
e.printStackTrace();
}