2012-01-08 3 views

答えて

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

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); 
+0

ありがとう、ウラジミール。実際には、POSTリクエストでファイルをダウンロードする必要があります。追加データは送信しないでください。しかし、私があなたのアプローチを使用しようとすると、0バイトのファイルがダウンロードされ、WiresharkでHTTPリクエストが表示されないことがわかります... –

関連する問題