Параметры HttpPost BasicNameValuePair в Java
Я должен передать список параметров для вызова POST HTTP.
Фактический JSON, ожидаемый от сервера:
{
"par1": "val1",
"par1": "val1",
"par3": ["val1", "val2", "val3"]
}
Вот заглушка Java:
List<NameValuePair> parameters = new ArrayList<>();
parameters.add(new BasicNameValuePair("par1", "val1"));
parameters.add(new BasicNameValuePair("par2", "val2"));
parameters.add(new BasicNameValuePair("par3", "["val1", "val2", "val3"]"));
вот как я передаю параметры HttpPost
объект:
httpPost.setEntity(new UrlEncodedFormEntity(parameters));
Конечная точка ожидает массив, как говорит линия 4°, и я понятия не имею, как передать его как массив.
Попробовал поиск в Stackru и нашел следующие решения:
//inside for loop
parameters.add(new BasicNameValuePair(String.format("par[%d]", incremental), "value"+incremental));
или же
//inside for loop
parameters.add(new BasicNameValuePair("par[]", "value"+incremental));
или же
String values = "" +
"[" +
"\"val1\"," +
"\"val2\"," +
"\"val3\""
"]";
parameters.add(new BasicNameValuePair("par3", values ));
На самом деле, я не могу отладить серверную часть, поэтому не могу сказать, правильны они или нет. С тех пор ни один из них не работал.
Как я могу сделать это на Java?
1 ответ
Фактический JSON с сервера
"par1": "val1",
"par1": "val1",
"par3": ["val1", "val2", "val3"]
Я думаю, что проблема в том, что вы получаете
"par1": "val1"
Дважды со стороны сервера. Измените второе на
par2: 'val2'