如何在Google脚本中从这个特定的POST HTTP调用中获得结果—在python中工作良好
我得到了这个用python编写的简单脚本如何在Google脚本中从这个特定的POST HTTP调用中获得结果—在python中工作良好,python,post,google-apps-script,Python,Post,Google Apps Script,我得到了这个用python编写的简单脚本 import requests val = "id" data = { 'val': val, 'type': '1' } session = requests.session() response = session.post('https://www.someweb.com/modules/output/ajax.check_results.php', data=data) print(response.json
import requests
val = "id"
data = {
'val': val,
'type': '1'
}
session = requests.session()
response = session.post('https://www.someweb.com/modules/output/ajax.check_results.php', data=data)
print(response.json())
出于安全原因,我不允许透露正确的url
我不懂python(我可以在我的计算机上运行上面的代码,它工作得很好),所以我想将代码移植到Google应用程序脚本。现在看来是这样
function getResults() {
var url = 'https://www.someweb.com/modules/output/ajax.check_results.php';
var data = {
'val': 'id',
'type': '1'
}
var options = {
"method": "post",
// "headers": headers,
"data": data
};
var response = UrlFetchApp.fetch(url, options);
Logger.log(response.getContent);
Logger.log(response);
Logger.log(response.getAllHeaders());
Logger.log(response.getResponseCode());
Logger.log(response.getContentText());
//Logger.log(JSON.parse(response.getContent()));
//Logger.log(JSON.parse(response.getContentText()));
//Logger.log(JSON.parse(response));
}
2:47:22 PM Notice Execution started
2:47:22 PM Info function () { [native code] }
2:47:22 PM Info
2:47:22 PM Info {Content-Type=text/html; charset=UTF-8, Expires=Thu, 19 Nov 1981 08:52:00 GMT, Date=Sun, 24 Jan 2021 13:47:22 GMT, Set-Cookie=PHPSESSID=ibdotvlrrec1q6glnbe8i0iu23; path=/, Server=Apache/2.4.38 (Debian), Cache-Control=private, must-revalidate, Content-Length=0, Pragma=no-cache, keep-alive=timeout=5, max=100, Connection=Keep-Alive}
2:47:22 PM Info 200.0
2:47:22 PM Info
2:47:23 PM Notice Execution completed
输出结果如下所示
function getResults() {
var url = 'https://www.someweb.com/modules/output/ajax.check_results.php';
var data = {
'val': 'id',
'type': '1'
}
var options = {
"method": "post",
// "headers": headers,
"data": data
};
var response = UrlFetchApp.fetch(url, options);
Logger.log(response.getContent);
Logger.log(response);
Logger.log(response.getAllHeaders());
Logger.log(response.getResponseCode());
Logger.log(response.getContentText());
//Logger.log(JSON.parse(response.getContent()));
//Logger.log(JSON.parse(response.getContentText()));
//Logger.log(JSON.parse(response));
}
2:47:22 PM Notice Execution started
2:47:22 PM Info function () { [native code] }
2:47:22 PM Info
2:47:22 PM Info {Content-Type=text/html; charset=UTF-8, Expires=Thu, 19 Nov 1981 08:52:00 GMT, Date=Sun, 24 Jan 2021 13:47:22 GMT, Set-Cookie=PHPSESSID=ibdotvlrrec1q6glnbe8i0iu23; path=/, Server=Apache/2.4.38 (Debian), Cache-Control=private, must-revalidate, Content-Length=0, Pragma=no-cache, keep-alive=timeout=5, max=100, Connection=Keep-Alive}
2:47:22 PM Info 200.0
2:47:22 PM Info
2:47:23 PM Notice Execution completed
伐木工人给我的
3:14:03 PM Error SyntaxError: Unexpected end of JSON input getResults @
我认为问题在于Google脚本需要一秒钟才能完成,而python需要14秒钟。它等待得到结果
有人可以帮助你如何制作谷歌脚本来获得结果?请看一下文档<代码>数据不是可用参数之一。您应该改用
有效负载
,并将数据
作为字符串传递
function getResults() {
const url = 'https://www.someweb.com/modules/output/ajax.check_results.php';
const data = {
'val': 'id',
'type': '1'
};
const options = {
'method': 'post',
'payload': JSON.stringify(data)
};
const response = UrlFetchApp.fetch(url, options);
console.log(response.getContentText()); // string
console.log(JSON.parse(response.getContentText())); // object, if it can be parsed
}
您收到的错误来自
JSON.parse(response.getContent())
,因为它需要一个字符串,但返回一个原始二进制数据数组。根据我上面的例子,您应该改为使用。您是对的。我捕获了XHR通信,复制了cURL并在python中使用它,因为它工作正常,所以我在Google脚本中使用了它。