【发布时间】:2018-12-10 19:48:18
【问题描述】:
我正在尝试从需要像这样的 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”?
谢谢!
【问题讨论】:
-
只需发送与有效载荷相同的字符串
-
也许试试:
var options={'method' : 'POST' };var result = UrlFetchApp.fetch('https://api.omniwallet.org/v2/address/addr/?addr=test1&addr=test2', options);我认为即使是 POST 请求,您也可以在 URL 中添加搜索字符串。 -
作为 QueryString 发送不起作用。响应是“{“错误”:“字典中没有地址”}”。发送与@TheMaster 建议的有效负载相同的字符串解决了这个问题。
-
@Bruno 太好了。考虑接受下面的解决方案,它说明了同样的事情。
标签: curl google-apps-script urlfetch