我正在尝试覆盖 XMLHTTPRequest 行为,以便在本机应用程序的情况下将 Ajax 请求委托给 phonegap 插件(它将处理 https 证书身份验证挑战)。
如果应用程序在本机容器中运行,
- 取消当前的 HTTP 调用
- 调用 phonegap 插件以执行 HTTP 调用
- 接收 HTTP 响应
- 使用 http 响应元素在当前 XMLHttpRequest 实例中触发事件
我的应用程序必须使用相同的源代码在本机和网络环境中运行。开发人员可以无缝地进行 Ajax 调用。
这是我正在尝试做的示例代码:
XMLHttpRequest.prototype.send = function() {
var me = this;
me.abort();
cordova.exec(function(httpresult) {
// Query success
// httpresult object contains http response headers and content
// How can onreadystatechange be triggered ???
me.onreadystatechange(httpresult);
}, function(httpresult) {
// Query failure
}, "QueryPlugin", "query", [{
url: me.url,
method: me.method,
data: me.data
// other http query params
}]);
}
我不知道如何将 http 标头和内容正确传递给当前的 XMLHttpRequest 实例以及如何触发 onreadystatechange 方法。
提前致谢,