【问题标题】:NameValuePair and MultipartEntityNameValuePair 和 MultipartEntity
【发布时间】:2015-04-20 09:58:58
【问题描述】:

在我的帖子请求中,我之前使用过 NameValuePair

Map<String, Object> data = new LinkedHashMap<String, Object>();
                data.put(SESSION, sessionId);
                data.put(MODULE_NAME, "POD_POD");

                try {

                    JSONArray nameValueArray = new JSONArray();
                   // signature_path_value.put("name", "uploadfile");
                    //signature_path_value.put("value", image_str);
                    //nameValueArray.put(signature_path_value);
                    customer_value.put("name", "signed_by");
                    customer_value.put("value", customer);
                    nameValueArray.put(customer_value);
                    order_time_value.put("name", "delivered_on");
                    order_time_value.put("value", order_time);
                    nameValueArray.put(order_time_value);
                    user_value.put("name", "driver_name");
                    user_value.put("value", user);
                    nameValueArray.put(user_value);

                    data.put(NAME_VALUE_LIST, nameValueArray);

                    String restData = org.json.simple.JSONValue.toJSONString(data);

                    HttpClient httpClient = new DefaultHttpClient();
                    HttpPost req = new HttpPost(rest_url);
                    // Add your data
                    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
                    nameValuePairs.add(new BasicNameValuePair(METHOD, SET_ENTRY));
                    nameValuePairs.add(new BasicNameValuePair(INPUT_TYPE, JSON));
                    nameValuePairs.add(new BasicNameValuePair(RESPONSE_TYPE, JSON));
                    nameValuePairs.add(new BasicNameValuePair(REST_DATA, restData));
                    req.setEntity(new UrlEncodedFormEntity(nameValuePairs));

                    // Send POST request
                    httpClient.getParams().setBooleanParameter(CoreProtocolPNames.USE_EXPECT_CONTINUE, false);
                    HttpResponse res = httpClient.execute(req); 

但现在我使用 MultiPartEntity 将图像上传到服务器..我知道使用 'myEntity.addPart()' 可以将字符串值添加到 multipartentity。但是如何将这些行添加到 multiPartEntity

JSONArray nameValueArray = new JSONArray();
                       // signature_path_value.put("name", "uploadfile");
                        //signature_path_value.put("value", image_str);
                        //nameValueArray.put(signature_path_value);
                        customer_value.put("name", "signed_by");
                        customer_value.put("value", customer);
                        nameValueArray.put(customer_value);
                        order_time_value.put("name", "delivered_on");
                        order_time_value.put("value", order_time);
                        nameValueArray.put(order_time_value);
                        user_value.put("name", "driver_name");
                        user_value.put("value", user);
                        nameValueArray.put(user_value);

data.put(NAME_VALUE_LIST, nameValueArray);

                    String restData = org.json.simple.JSONValue.toJSONString(data);

【问题讨论】:

    标签: android json post multipart


    【解决方案1】:

    我给出了如何将MultipartEntity 与字符串和文件数据一起使用的示例代码。

            MultipartEntity mEntity = new MultipartEntity();
    
            //For String data 
    
            mEntity.addPart("key1", new StringBody("value1"));
            mEntity.addPart("key2", new StringBody("value2"));
            mEntity.addPart("key3", new StringBody("value3"));
    
    
            //For File data
            mEntity.addPart("file", new FileBody("file_path"));
            req.setEntity(mEntity);
    

    在你的情况下尝试下面的代码。

            mEntity.addPart(METHOD, new StringBody(SET_ENTRY));
            mEntity.addPart(INPUT_TYPE, new StringBody(JSON));
            mEntity.addPart(RESPONSE_TYPE, new StringBody(JSON));
            mEntity.addPart(REST_DATA, new StringBody(restData));
    

    【讨论】:

    • 谢谢..但是在 Namevaluepair 中我使用了 'data.put(NAME_VALUE_LIST, nameValueArray);'并将数据添加到 namevaluepair 数组,例如 'nameValuePairs.add(new BasicNameValuePair(REST_DATA, restData));'我怎么能像多方那样做,因为服务想要以正确的顺序接收数据
    • @Sameera 哦,所以您正在创建 JSON 数据并发送.. 我刚刚给出了示例代码。你可以修改它。
    • 是的。我做了很多关于将 json 数据添加到多部分实体的研究。但我没有找到任何例子。你能给点小例子吗?如何将 json 数据添加到多部分实体?
    • 谢谢。在你的“restData”字符串中有我的 JSON 值?
    • @Sameera :D 可以直接添加,不需要创建JSON,也取决于服务器端,web代码如何处理文件。
    猜你喜欢
    • 2012-11-08
    • 2015-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多