Http Post请求返回HTML而不是Csv数据

时间:2018-05-08 12:01:17

标签: python node.js express google-apps-script

我正在尝试从aspx网站上获取csv。没有与csv的直接链接,它是在发布表单时生成的服务器。

以下使用UrlFetchApp在Google App Script中正常运行: 它返回原始.csv数据。

  ..// other code omitted for brevity

  var page = UrlFetchApp.fetch(
    "https://www.mycompanyurl.com/summary.aspx", {
    "method": "POST",
    "headers": {"Cookie": myCookieData},
    "payload": {
      '_ctl0:contact:isActive': '1',
      '__VIEWSTATE': myViewstateData,
      '__EVENTTARGET': '_ctl0:Main:ButtonExport',
      '__EVENTARGUMENT': '',
      '__LASTFOCUS': '',
      '__VIEWSTATEENCRYPTED': '',
      '__PREVIOUSPAGE': ''
    }
});

Logger.log(page); // <---- prints the csv file content

我试图在python请求库中模拟它。

..// other code omitted for brevity
..// cookies are in the session 's'

page = s.post(
  'https://www.mycompanyurl.com/summary.aspx', 
  data={
    '_ctl0:contact:isActive': '1',
    '__VIEWSTATE': myViewstateData,
    '__EVENTTARGET': '_ctl0:Main:ButtonExport',
    '__EVENTARGUMENT': '',
    '__LASTFOCUS': '',
    '__VIEWSTATEENCRYPTED': '',
    '__PREVIOUSPAGE': ''
  }
);

print(page) // <---- prints the html content of the page

我省略了另外两个我尝试过的结果相同的库。 axios(node.js)和request(node.js)

为什么请求适用于Google脚本,而不适用于其他更受欢迎的库。

我可能缺少一些简单的东西,但经过几个小时尝试不同的标题配置和多个库,我感到很茫然。

1 个答案:

答案 0 :(得分:0)

我可以在两个代码段之间看到的第一个区别是你没有将你的cookie传递给Python版本。

如果您查看响应中的HTML,将会很有用。也许有一些错误信息(例如:请登录)。

尝试adding your cookies to the request,看看是否有帮助。