0

我正在尝试覆盖 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 方法。

提前致谢,

4

1 回答 1

1

Cordova/phonegap 为一些提供附加功能的平台重新定义了开箱即用的 XMLHttpRequest 对象,例如对于 Windows Phone,它通过以下方式执行此操作

https://github.com/apache/incubator-cordova-js/blob/master/lib/wp7/plugin/wp7/XHRPatch.js

可能您想以相同的方式做某事或为您的平台扩展现有的实现。

于 2012-10-12T19:29:30.487 回答