我最近看到了一个示例代码,它首先创建 NameValuePair 对象并填充它:
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("Param1", param1));
params.add(new BasicNameValuePair("Param2", param2));
params.add(new BasicNameValuePair("Param3", param3));
然后将其传递给另一种方法以将其转换为一个字符串:
private String getQuery(List<NameValuePair> params) throws UnsupportedEncodingException
{
StringBuilder result = new StringBuilder();
boolean first = true;
for (NameValuePair pair : params)
{
if (first)
first = false;
else
result.append("&");
result.append(URLEncoder.encode(pair.getName(), "UTF-8"));
result.append("=");
result.append(URLEncoder.encode(pair.getValue(), "UTF-8"));
}
return result.toString();
}
在我看来,我可以通过这样做得到相同的结果:
String query = "";
query += URLEncoder.encode("Param1", "UTF-8") + "=" + URLEncoder.encode(Param1, "UTF-8")
query += "&" + URLEncoder.encode("Param2", "UTF-8") + "=" + URLEncoder.encode(Param2, "UTF-8")
query += "&" + URLEncoder.encode("Param2", "UTF-8") + "=" + URLEncoder.encode(Param2, "UTF-8")
我的代码可以工作吗?如果不是,为什么?如果是,那么以另一种方式做的好处是什么?
我意识到前者允许您传入任意数量的 NVP,但我只是证明了在构建 NVP 所需的行数中,我能够构建整个 POST 字符串!