我想从Perl向REST API服务发出POST请求。作为POST Form参数,该服务需要一个多部分编码文件。
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服务,该服务期望多部分编码文件作为表单参数?
作为旁注,我实际上想要编写下面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)}
行。我认为,解释这条线正在做什么也会对我有所帮助。
答案 0 :(得分:0)
$ua->post($REST_URL,
Content_Type => 'form-data',
Content => [
file => [$file]
],
);