Android 使用getAllResponseHeaders获取HTTP响应头

Android 使用getAllResponseHeaders获取HTTP响应头,android,http-headers,firefox-addon,firefox-addon-sdk,observers,Android,Http Headers,Firefox Addon,Firefox Addon Sdk,Observers,每次访问某个站点时,我都会尝试获取http响应头。我认为使用如下观察者就足够了: const OBS = Cc['@mozilla.org/observer-service;1'].getService(Ci.nsIObserverService); let httpRequestObserver ={ observe: function(subject, topic, data){ var httpChannel = subject.QueryInterfa

每次访问某个站点时,我都会尝试获取http响应头。我认为使用如下观察者就足够了:

const OBS = Cc['@mozilla.org/observer-service;1'].getService(Ci.nsIObserverService); 
let httpRequestObserver ={ 
      observe: function(subject, topic, data){
          var httpChannel = subject.QueryInterface(Ci.nsIHttpChannel);
        if (topic == "http-on-examine-response") {
          headers=httpChannel.getAllResponseHeaders();  
        }
      }
    };
在启动方法中,我添加了它,然后在关闭方法中,我删除了它:

OBS.addObserver(httpRequestObserver, "http-on-examine-response", false);//startup methode

OBS.addObserver(httpRequestObserver, "http-on-examine-response", false);//shutdown
但我在日志中记下了这一点:

JavaScript Error: "httpChannel.getAllResponseHeaders is not a function"
我是不是走错了路,手术比看起来复杂?这是针对android版firefox的扩展,我没有使用sdk。谢谢您的帮助。

不是
XMLHttpRequest
。相反,
XMLhttpRequest
是一个很好的围绕通道的包装类,而不仅仅是http通道,它还添加了方便的函数,如
getAllResponseHeaders()

您可以使用
nsIHttpChannel.visitResponseHeaders
模拟
getAllResponseHeaders

if (subject instanceof Ci.nsIHttpChannel) {
  var headers = "";
  subject.visitResponseHeaders(function(header, value) {
    headers += header + ": " + value + "\r\n";
  });
}

谢谢你,你是最棒的。