如何通过 urlfetchapp 发送带有有效负载中的数组的 post 请求

Jin*_*ček 5 google-apps-script

我需要模拟从 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"
  }
}
Run Code Online (Sandbox Code Playgroud)

我在 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());
Run Code Online (Sandbox Code Playgroud)

这将返回此请求:

{
  "args": {},    
  "data": "",
  "files": {},
  "form": { "Link[]": "[Ljava.lang.Object;@536733f2",
  "animationtype": "link",
  "size": "300",
  "speed": "1",
  "usersize": "",
  "userspeed": ""
}
Run Code Online (Sandbox Code Playgroud)

问题就在这里:

"form": { "Link[]": "[Ljava.lang.Object;@536733f2",
Run Code Online (Sandbox Code Playgroud)

应该有这个:

  "form": {
    "Link[]": [
      "picturelink1.png", 
      "picturelink2.png", 
      "picturelink3.png"
    ], 
Run Code Online (Sandbox Code Playgroud)

我也尝试过将其字符串化并作为 JSON 发送

"Content-type" : "application/json",
Run Code Online (Sandbox Code Playgroud)

但它也不会产生所需的输出..

它接收有效负载作为带引号的字符串:

 "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\":\"\"}": "" }, .....
Run Code Online (Sandbox Code Playgroud)

感谢您的帮助..

Jin*_*ček 2

我找到了!!!haleluya..有效负载必须以这种方式准备!我在制作 PHP 脚本时发现了这个解决方案。

  var payload =
      {       
        "Link[0]":"http://..",
        "Link[1]":"http://..",        
        "animationtype":"link","size":"300","speed":"1","usersize":"","userspeed":""
      }...
Run Code Online (Sandbox Code Playgroud)

不是很直观,但效果很好!

收到的有效负载看起来与 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": "" }, .....
Run Code Online (Sandbox Code Playgroud)