Параметры 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'

Другие вопросы по тегам