我需要使用saveURI
用法下载文件(nsIWebBrowserPersist
)。但该文件应该作为POST请求。怎么做?
答案 0 :(得分:3)
nsIWebBrowserPersist.saveURI()
采用aPostData
参数 - 如果您传递输入流,则会发出POST请求。如果您要发送一些简单数据,使用nsIStringInputStream应该是最简单的,如下所示:
var data = "a=1&b=2";
var stream = Components.classes["@mozilla.org/io/string-input-stream;1"]
.createInstance(Components.interfaces.nsIStringInputStream);
stream.setData(data, data.length);
webBrowserPersist.saveURI(uri, null, null, stream, null, file);
答案 1 :(得分:0)
这是工作代码(感谢来自IRC #extdev的BenB):
var dataString = "name1=data1&name2=data2";
var stringStream = Components.classes["@mozilla.org/io/string-input-stream;1"].
createInstance(Components.interfaces.nsIStringInputStream);
if ("data" in stringStream) // Gecko 1.9 or newer
stringStream.data = dataString;
else // 1.8 or older
stringStream.setData(dataString, dataString.length);
var postData = Components.classes["@mozilla.org/network/mime-input-stream;1"].
createInstance(Components.interfaces.nsIMIMEInputStream);
postData.addHeader("Content-Type", "application/x-www-form-urlencoded");
postData.addContentLength = true;
postData.setData(stringStream);
persist.saveURI(fURI, null, aReferrer, postData, "", file);
https://developer.mozilla.org/en/Code_snippets/Post_data_to_window#Preprocessing_POST_data