[英]How to send a POST request from a Firefox extension?
我想從 Firefox 擴展向 Web 服務器發送 POST 請求。
我發現這個例子可以發送 POST 請求; https://developer.mozilla.org/en/Creating_Sandboxed_HTTP_Connections#HTTP_notifications
但我無法讓它工作。
我目前有這樣的代碼;
var ioService = Components.classes["@mozilla.org/network/io-service;1"]
.getService(Components.interfaces.nsIIOService);
var uri = ioService.newURI("http://www.google.com", null, null);
gChannel = ioService.newChannelFromURI(uri);
postData = "a=1&b=2&c=3";
var inputStream = Components.classes["@mozilla.org/io/string-input-stream;1"]
.createInstance(Components.interfaces.nsIStringInputStream);
inputStream.setData(postData, postData.length);
var uploadChannel = gChannel.QueryInterface(Components.interfaces.nsIUploadChannel);
uploadChannel.setUploadStream(inputStream, "application/x-www-form-urlencoded", -1);
uploadChannel.requestMethod = "POST";
uploadChannel.open();
但我收到有關“無法修改 WrappedNative 的屬性”的錯誤消息
如何使用 XMLHttpRequest 對象。 外延開發沒有同源政策
我使用以下代碼來測試 URL 是否存在:
if( typeof XMLHttpRequest == "undefined" ){
var req = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"]
.createInstance();
}
else{
var req = new XMLHttpRequest();
}
try{
req.open( "GET", "https://" + request.URI.host + request.URI.path );
var timeOutID = httpNowhere._getWindow().setTimeout(function () {
req.abort();
Services.prompt.alert(null,"Info","nok "+ "https://" + request.URI.host
+ request.URI.path );
}, (redirectTimer));
req.onreadystatechange = function (e) {
if (req.readyState==4){
Services.prompt.alert(null,"Info","ok "+ "https://" + request.URI.host
+ request.URI.path );
req.abort();
}
}
req.send( null );
} catch (err) {
Services.prompt.alert(null,"Info",err);
}
requestMethod 是nsIHttpChannel上的一個屬性,因此您需要先調用 gChannel 上的 QueryInterface 才能設置它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.