Java - 通过HttpURLConnection发送键值对数组

时间:2015-02-21 04:08:07

标签: java

我需要通过HttpURLConnection发送一组键值对,这里有捕获 - 可能有很多对具有相同的键和/或相同的值,如下所示:

{[key1,val1], [key1,val2], [key2,val2] ... }

我尝试了以下但问题是它不适用于具有相同键但具有不同值的多对:

    Map<String, String> params) throws IOException {
    URL url = new URL(requestURL);
    httpConn = (HttpURLConnection) url.openConnection();
    httpConn.setUseCaches(false);

    httpConn.setDoInput(true); // true indicates the server returns response

    StringBuffer requestParams = new StringBuffer();

    if (params != null && params.size() > 0) {

        httpConn.setDoOutput(true); // true indicates POST request

        // creates the params string, encode them using URLEncoder
        Iterator<String> paramIterator = params.keySet().iterator();
        while (paramIterator.hasNext()) {
            String key = paramIterator.next();
            String value = params.get(key);
            requestParams.append(URLEncoder.encode(key, "UTF-8"));
            requestParams.append("=").append(
                    URLEncoder.encode(value, "UTF-8"));
            requestParams.append("&");
        }

        // sends POST data
        OutputStreamWriter writer = new OutputStreamWriter(
                httpConn.getOutputStream());
        writer.write(requestParams.toString());
        writer.flush();
    }

有关如何通过POST发送此键值对数组的任何建议吗?

注意:出于原因,我想要使用org.apache.http包中的任何内容。

1 个答案:

答案 0 :(得分:1)

将它们作为编号列表对象发送,例如

Iterator<String> paramIterator = params.keySet().iterator();
        int i = 0;
        while (paramIterator.hasNext()) {
            String key = "k"+i;
            String value = paramIterator.next()+","+params.get(key);
            requestParams.append(URLEncoder.encode(key, "UTF-8"));
            requestParams.append("=").append(
                    URLEncoder.encode(value, "UTF-8"));
            requestParams.append("&");
            i++;

        }

你在服务器端所做的事情是另一回事,取决于你想要实现的目标。