如何使用MultipartEntity制作对象的JSONarray?

时间:2015-11-05 11:47:36

标签: android apache android-asynctask http-post multipart

我必须使用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格式。

2 个答案:

答案 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();
}