POST с несколькими полями с одинаковым именем - PullRequest
0 голосов
/ 10 декабря 2018

Я пытаюсь собрать некоторые данные из API, для которого требуются параметры POST, например:

POST /v2/address/addr/ HTTP/1.1
Host: api.omniwallet.org
Content-Type: application/x-www-form-urlencoded
addr=test1&addr=test2

CURL версия

curl -X POST -H "Content-Type: application/x-www-form-urlencoded" -H "Content-Type: application/x-www-form-urlencoded" -d "addr=test1&addr=test2" "https://api.omniwallet.org/v2/address/addr/"

https://api.omniwallet.org/#doc-general-notes

Проблемаявляется то, что, как вы можете видеть, поля имеют одно и то же имя «addr».

Итак, я попытался поместить данные в массив с именем «addr»

var options = { 'method' : 'POST' ,'payload' : { addr: [ "test1", "test2"] } };
var result = UrlFetchApp.fetch('https://api.omniwallet.org/v2/address/addr/', options);

, но это не такработал, сервер не распознает поля данных формы в списке «addr».Также попытался

var options = { 'method' : 'POST' ,'payload' : { addr: "test1", addr: "test2" } };
var result = UrlFetchApp.fetch('https://api.omniwallet.org/v2/address/addr/', options);

Но это также не работает, потому что он будет учитывать только значение второго поля "addr" (очевидно).

Есть ли в любом случае выполнение этого метода POSTкаким-то другим способом, где я могу вызвать "addr = test1 & addr = test2", как в примере CURL?

Спасибо!

1 Ответ

0 голосов
/ 11 декабря 2018
  • Вы хотите преобразовать команду curl в Google Apps Script.

Если я правильно понимаю, и серверу, который вы хотите использовать, нужны значения в качестве данных формы, как насчет этого?модификация?

Точки модификации:

  • В вашей команде curl значения addr=test1&addr=test2 отправляются в виде "addr": ["test1", "test2"].
    • При первой попытке массив не может быть проанализирован addr.
    • При второй попытке отправляется только addr: "test2", поскольку используется тот же ключ.

Когда вышеуказанные точки отражены в сценарии, измененный сценарий выглядит следующим образом.

Измененный сценарий:

В этой модификации options былмодифицирована.Я думаю, что это тот же результат с @TheMaster.

var options = {
  method: 'POST',
  payload: 'addr=test1&addr=test2', // Modified
};

Если это не сработало, извините.

...