私は最近、最初に 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));
それを別のメソッドに渡して、1 つの文字列に変換します。
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 文字列全体を構築できることを実証しました!