在Google脚本中尝试/捕获HTTP响应的最佳方式
Best way to Try/Catch HTTP response in Google Script
我还是JavaScript和Google应用程序脚本的新手,这是我第一次尝试使用"Try/Catch"语句。
我正在运行一个连接到页面的脚本。它大部分时间都在连接,但偶尔不会响应并抛出http错误(或者,响应将为空)。如果我得到错误代码,我想尝试/捕捉这个响应,让它再次运行,但我不能100%确定我是否理解语法,因为无论我如何格式化它,它要么从不抛出异常,要么总是抛出异常。
以下是我一直在试验的一些示例代码:
function myFunction() {
var response = UrlFetchApp.fetch("google.com");
Logger.log('Response Code: ' + response.getResponseCode());
try {if(response.getResponseCode() === 200);
} catch (err) {
throw 'Page connected';
}
}
如果我能做到这一点,我相信我能解决剩下的问题。然而,即使日志显示我得到了200的HTTP响应,它也从未抛出错误"Page connected"。
如果有人能指导我:
1) 这是实现我想要的正确方法吗,还是尝试/抓住其他东西?2) 正确的语法。
我将不胜感激。
getResponseCode
不会抛出异常,但fetch
确实抛出异常,因此请将其包含在try
块中:
function myFunction() {
try {
var response = UrlFetchApp.fetch("google.com");
Logger.log('Response Code: ' + response.getResponseCode());
if(response.getResponseCode() === 200) {
// something
}
} catch (err) {
// handle the error here
}
}
从今天起,可以将muteHttpExceptions
参数放在UrlFetchApp.fetch(url, options)
的options
中。它使HTTP异常静音。
这样,就不需要try catch
了——只需检查响应代码是否正常即可。
您可以使用选项muteHttpExceptions
自己处理异常。
根据文件:
muteHttpExceptions
:如果为true,那么如果响应代码指示失败,并返回HTTPResponse。默认值为false。
当然,这里是示例代码:
function DoSomething(url)
{
var options =
{
'muteHttpExceptions' : true
};
var response = UrlFetchApp.fetch(url, options);
if(response.getResponseCode() == 200)
{
//Do anything with url data...
return "Success!!!";
}
else
{
console.log("Response Code: " + response.getResponseCode());
console.log("Content Text:'n" + response.getContentText());
return "Failed :(";
}
}
以下是对我来说很好的方法,无论页面是否正确加载,都会返回HTTP代码:
function getStatusCode(url){
var options = {
'followRedirects' : false
};
try{
var response = UrlFetchApp.fetch(url,options);
return response.getResponseCode();
} catch (err) {
// sample error content: "returned code 404."
var regExp = new RegExp("returned code ([0-9]{3})","gmi");
return regExp.exec(err)[1];
}
}
相关文章:
- IIS动态HTTP响应标头
- 存储$http如何从$http函数(Angularjs)外部获取可访问变量中的响应
- Typescript angularjs$http获取响应类型(避免使用<any>)
- http请求使用html而不是json进行响应
- 我如何设置HTTP头“;访问控制允许起源”;用于来自thttpd web服务器的HTTP响应
- 从javaspring方法管理http.get响应
- Http响应拆分安全问题的XMLHTTPRequest/Response用例的Filter实现
- 从http获取响应管理zip
- 是浏览器在AJAX响应中自动处理的HTTP标头
- "所请求的名称已经作为不同类型的“”存在;HTTP 409响应错误
- 使用Express筛选HTTP响应
- HTTP请求使用cURL,但在浏览器中使用javascript时会得到CORS响应
- 分析angular.js中的JSONP$http.json()响应
- 使用不同参数的超级代理缓存缓存 HTTP 响应
- 如何在 http 上调用 end().服务器响应对象
- $http.post() angularjs 响应函数未按正确的顺序执行
- $http.获取和$http.JSONP未能获得Google API响应
- 流星:返回承诺's,然后再响应HTTP发布请求
- 使用正确的数组响应HTTP请求时出现问题.使用expressjs从函数内部发送结果的可能方法
- 获取响应http angular