POST具有相同名称的多个字段

时间:2018-12-10 19:48:18

标签: curl google-apps-script urlfetch

我正在尝试从需要这样的POST参数的API收集一些数据

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方法,如CURL示例中那样我可以强制执行“ addr = test1&addr = test2”?

谢谢!

1 个答案:

答案 0 :(得分:1)

  • 您要将curl命令转换为Google Apps脚本。

如果我的理解是正确的,并且您要使用的服务器需要这些值作为表单数据,那么此修改如何?

修改点:

  • 在curl命令中,addr=test1&addr=test2的值以"addr": ["test1", "test2"]的形式发送。
    • 第一次尝试时,无法解析addr的数组。
    • 在第二次尝试中,由于使用了相同的密钥,因此仅发送addr: "test2"

当上述几点反映到脚本时,修改后的脚本如下。

修改后的脚本:

在此修改中,options被修改。我认为与@TheMaster的结果相同。

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

如果这不起作用,对不起。