我想從Perl發出一個POST請求給REST API服務。作爲POST表單參數,該服務需要一個多部分編碼文件。perl中的多部分編碼文件內容
use HTTP::Request::Common;
use LWP::UserAgent;
my $file="/path/to/file";
my $REST_URL = "/path/to/REST/service";
my $ua = LWP::UserAgent->new;
my $response= $ua->post($REST_URL, ['file' => $file]);
我寫了上面的代碼。但顯然,REST服務器無法理解POST請求,因爲我只將文件路徑發送到REST服務,而不是多部分編碼的文件內容。任何人都可以請讓我知道如何使文件多部分編碼並將其作爲POST請求發送給REST服務,該服務期望將多部分編碼文件作爲Form參數?
作爲一個方面說明,我實際上希望編寫下面Python代碼的等效Perl代碼。
REST_URL = "/path/to/REST/service"
SAMPLE_FILE = "/path/to/file"
with open(SAMPLE_FILE, "rb") as sample:
multipart_file = {"file": ("temp_file_name", sample)}
request = requests.post(REST_URL, files=multipart_file)
但是,對於我有限的Python知識,我並不瞭解行multipart_file = {"file": ("temp_file_name", sample)}
。我想,這條線正在做什麼的解釋也會對我有所幫助。
你閱讀的文檔[HTTP ::支持::通用(https://metacpan.org/pod/HTTP::Request::Common) ?它會準確告訴你需要做什麼,包括它說要將'form-data'的內容類型指定爲請求標頭的部分。 –
@MattJacob謝謝你的提示。經過一番閱讀,我更瞭解它。 – greenPlanet