我正在使用附加 sdk 构建一个 Firefox 附加组件。我需要向某个页面发出 http 请求,我想处理连接超时但在 api 中找不到任何内容:https://addons.mozilla.org/en-US/developers/docs/sdk/latest/modules/sdk/request.html
我实际上正在寻找的是一个回调,以防客户端无法连接到服务器。
有没有办法实现这一目标?
最佳答案
SDK 请求将始终调用 onComplete
,当请求被认为对网络完成时。这意味着 onComplete
在任何情况下都会被调用,不管请求是返回错误还是成功。
为了检测您遇到了哪个错误,您需要检查 Response 对象(传递给 onComplete
函数的对象)property "status" ( response.status
)。它保存请求的状态代码。要查找状态代码,请考虑 list on the mozilla developer network .如果响应状态为 0,则请求完全失败,用户可能处于离线状态,或者无法到达目标。
超时将是状态代码 504 或 0。实现将类似于:
var Request = require("sdk/request");
Request({
url: "http://foo.bar/request.target",
onComplete: function(response) {
if(response.status==0||response.status==504) {
// do connection timeout handling
}
// probably check for other status codes
else {
// assume the request went well
}
}
}).get();
我个人在请求对象上使用验证函数,它返回一个数字,这取决于我是否得到了正确的响应、来自 Web 服务器的错误或连接问题(4xx 和 0 状态代码)。
关于firefox-addon - Firefox 插件 SDK : handle http request timeout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15810790/