覆盖XMLHTTPRequest调用

时间:2012-10-12 11:32:08

标签: javascript cordova xmlhttprequest

我正在尝试覆盖XMLHTTPRequest行为,以便在本机应用程序(将处理https证书身份验证质询)的情况下将Ajax请求委托给phonegap插件。

如果应用程序在本机容器中运行,

  • 取消当前的HTTP通话
  • 调用phonegap插件以执行HTTP调用
  • 接收HTTP响应
  • 使用http响应元素
  • 在当前XMLHttpRequest实例中触发事件

我的应用必须使用相同的源代码在本机和Web上下文中运行。开发人员可以无缝地进行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方法。

提前致谢,

1 个答案:

答案 0 :(得分:1)

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

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

您可能希望以相同的方式执行某些操作或扩展您平台的现有实施。