我正在构建机器人应用程序,试图使用perl脚本来实现curl请求,我遇到的问题是授权。
简单的curl命令类似于。
curl \
-H 'Authorization: Bearer VM2CKBMXI3AVX2GMYPLBMYFRW3RCHYXS' \
'https://api.wit.ai/message?v=20160722&q='我不喜欢使用Perl脚本中的system()调用,因为在用户和机器人之间会有很多来回。
我找到了这个库http://search.cpan.org/~szbalint/WWW-Curl-4.17/lib/WWW/Curl.pm
我正在搜索setopt函数,以便找出它接受哪个参数,因为我的问题是将授权参数放在命令中的什么位置。我找到了这个链接http://web.mit.edu/darwin/src/modules/curl/curl/perl/Curl_easy/easy.pm
我现在的脚本代码如下所示:
use strict;
use warnings;
use WWW::Curl::Easy;
my $curl = WWW::Curl::Easy->new;
my $Authorization="Authorization: Bearer VM2CKBMXI3AVX2GMYPLBMYFRW3RCHYXS";
$curl->setopt(CURLOPT_HEADER,1);
$curl->setopt(CURLOPT_URL, 'https://api.wit.ai/message?v=20160721&q=hello');
# A filehandle, reference to a scalar or reference to a typeglob can be used here.
my $response_body;
$curl->setopt(CURLOPT_WRITEDATA,\$response_body);
# Starts the actual request
my $retcode = $curl->perform;
# Looking at the results...
if ($retcode == 0) {
print("Transfer went ok\n");
my $response_code = $curl->getinfo(CURLINFO_HTTP_CODE);
# judge result and next action based on $response_code
print("Received response: $response_body\n");
} else {
# Error code, type of error, error message
print("An error happened: $retcode ".$curl->strerror($retcode)." ".$curl->errbuf."\n");
}我只需要知道我应该使用哪个CURLOPT来实现授权。如果你有任何想法,那将是很棒的。
谢谢Eran Gross
发布于 2016-07-22 11:49:38
如果您只想设置标题"Authorization“,则选项为CURLOPT_HTTPHEADER
#!/usr/bin/perl
use strict;
use warnings;
use WWW::Curl::Easy;
my $curl = WWW::Curl::Easy->new;
$curl->setopt(CURLOPT_URL, 'http://127.0.0.1/dumprequest.php');
my @headers = ("Authorization: keygoeshere", "X-Foo: Bah");
$curl->setopt(CURLOPT_HTTPHEADER, \@headers);
$curl->setopt(CURLOPT_HEADER, 1);
my $retcode = $curl->perform;提供:
GET dumprequest.php HTTP/1.1
Host: 127.0.0.1
Accept: */*
Authorization: keygoeshere
X-Foo: Bah但是如果你真的想做超文本传输协议的认证,那么你可以使用CURLOPT_USERPWD和CURLOPT_HTTPAUTH。有关选项的更多信息,请参见https://curl.haxx.se/libcurl/c/curl_easy_setopt.html。
https://stackoverflow.com/questions/38517502
复制相似问题