我需要通过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包中的任何内容。
答案 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++;
}
你在服务器端所做的事情是另一回事,取决于你想要实现的目标。