Google apps script 如何通过urlfetchapp使用有效负载中的数组发送post请求

Google apps script 如何通过urlfetchapp使用有效负载中的数组发送post请求,google-apps-script,Google Apps Script,我需要模拟从html表单到页面的post请求。我需要知道,如何正确地发送有效载荷中的数组。提前谢谢 我有简单的html代码,目标页面将通过以下方式提交: { "args": {}, "data": "", "files": {}, "form": { "Link[]": [ "picturelink1.png", "picturelink2.png", "picturelink3.png" ], "anima

我需要模拟从html表单到页面的post请求。我需要知道,如何正确地发送有效载荷中的数组。提前谢谢

我有简单的html代码,目标页面将通过以下方式提交:

{
  "args": {}, 
  "data": "", 
  "files": {}, 
  "form": {
    "Link[]": [
      "picturelink1.png", 
      "picturelink2.png", 
      "picturelink3.png"
    ], 
    "animationtype": "link", 
    "size": "400", 
    "speed": "0.4", 
    "usersize": "", 
    "userspeed": "0.1"
  }
}
我已经用GAS编写了代码,它应该模拟相同的请求:

var payload =
      {       
        "Link[]":["jovianarchive_com/Content/Charts/621903744000000000_png","jovianarchive_com/Content/Charts/621903708000000000_png","jovianarchive_com/Content/Charts/621903816000000000_png"],  
        "animationtype":"link","size":"300","speed":"1","usersize":"","userspeed":""
      }

   var options =
   {
     "method" : "post",
     "payload" : payload
   };
  var result = (UrlFetchApp.fetch("http://httpbin.org/post", options).getContentText());
这将返回此请求:

{
  "args": {},    
  "data": "",
  "files": {},
  "form": { "Link[]": "[Ljava.lang.Object;@536733f2",
  "animationtype": "link",
  "size": "300",
  "speed": "1",
  "usersize": "",
  "userspeed": ""
}
问题在于:

"form": { "Link[]": "[Ljava.lang.Object;@536733f2",
应该是这样的:

  "form": {
    "Link[]": [
      "picturelink1.png", 
      "picturelink2.png", 
      "picturelink3.png"
    ], 
我还尝试将其字符串化并作为JSON发送

"Content-type" : "application/json",
但是它也不能产生期望的输出

它以带引号的字符串形式接收有效负载:

 "args": {}, "data": "", "files": {}, "form": { "{\"Link[]\":[\"jovianarchive_com/Content/Charts/621903744000000000_png\",\"jovianarchive_com/Content/Charts/621903708000000000_png\",\"jovianarchive_com/Content/Charts/621903816000000000_png\"],\"animationtype\":\"link\",\"size\":\"300\",\"speed\":\"1\",\"usersize\":\"\",\"userspeed\":\"\"}": "" }, .....

谢谢你的帮助。

我找到了!!!哈利路亚。。 有效载荷必须以这种方式准备!我在编写PHP脚本时发现了这个解决方案

  var payload =
      {       
        "Link[0]":"http://..",
        "Link[1]":"http://..",        
        "animationtype":"link","size":"300","speed":"1","usersize":"","userspeed":""
      }...
不是很直观,但效果很好

收到的负载看起来与HTML表单中的负载不一样,但在我的情况下,它工作了

{ "args": {}, "data": "", "files": {}, "form": 
{ 
"Link[0]": "http://jovianarchive.com/Content/Charts/621903744000000000_.png", 
"Link[1]": "http://jovianarchive.com/Content/Charts/621903708000000000_.png",
"animationtype": "link", "size": "300", "speed": "1", "usersize":` "","userspeed": "" }, .....

如果需要使用(key=>value)发送数组,也可以使用如下构造:


澄清:您正在尝试发送“application/x-www-form-urlencoded”数据吗?我正在尝试发送一个包含3个字符串的数组。。viz:var payload={“Link[]:[”,“animationtype:“Link”,“size:“300”,“speed:“1”,“usersize:”userspeed:“}JSON不适合您吗?这样您就可以轻松地使用{“Link:”[“file1.png”,“file2.png”,“file3.png”]}您只需要将“Content type”设置为“application/JSON”“你可以在对象上使用JSON.stringify。@Karan这也是我尝试过的。。但我在这里得到:@Karan这也是我尝试过的。。但是它接收的有效载荷是带引号的字符串:{},“数据:”,“文件:{},“格式:{{{}”,“链接[]\:[\“,\”,\“动画类型\:“链接\”,“大小\:“300\”,“速度\:“1\”,“用户大小\:\”,”userspeed\“:\“\”}”:“},…..但它应该是这样的:“表单”:{“Link[]”:[“picturelink1.png”,“picturelink2.png”]}
payload = {
    'fields[PRICE]': 2700
    ,'fields[NAME]': 'Name'
};

// to change it
payload['fields[PRICE]'] = 2845;