使用REST API从Perl到Sharepoint的基本身份验证不起作用
我试图使用Perl REST api连接Sharepoint,但总是出现401未经授权的错误。我已经验证了用户名和密码。当使用相同的凭据通过浏览器访问SharePoint网站时,两者都可以正常工作。我认为您的问题在于使用REST API从Perl到Sharepoint的基本身份验证不起作用,perl,rest,sharepoint,Perl,Rest,Sharepoint,我试图使用Perl REST api连接Sharepoint,但总是出现401未经授权的错误。我已经验证了用户名和密码。当使用相同的凭据通过浏览器访问SharePoint网站时,两者都可以正常工作。我认为您的问题在于encode\u base64-如果您这样做: use REST::Client; use JSON; use Data::Dumper; use MIME::Base64; my $username = 'mydomain.com\admin'; my $password = '
encode\u base64
-如果您这样做:
use REST::Client;
use JSON;
use Data::Dumper;
use MIME::Base64;
my $username = 'mydomain.com\admin';
my $password = 'testpwd';
my $headers = {Accept => 'application/json', Authorization => 'Basic ' . encode_base64($username . ':' . $password)};
my $client = REST::Client->new();
$client->setHost('http://55.170.145.189:2013');
$client->GET(
'/SitePages',
$headers
);
print $client->responseContent();
输出结果如下:
use Data::Dumper;
use MIME::Base64;
my $username = 'mydomain.com\admin';
my $password = 'testpwd';
my $headers = {Accept => 'application/json',
Authorization => 'Basic ' . encode_base64($username . ':' . $password)};
print Dumper $headers;
您的标题中有一个错误的换行符
因此,不妨尝试:
$VAR1 = {
'Accept' => 'application/json',
'Authorization' => 'Basic bXlkb21haW4uY29tXGFkbWluOnRlc3Rwd2Q=
'
};
它将base64行的结尾设置为'
。因此,你可以得到:
my $headers = {Accept => 'application/json',
Authorization => 'Basic ' . encode_base64($username . ':' . $password, '')};
我认为您的问题在于
encode_base64
-如果您这样做:
use REST::Client;
use JSON;
use Data::Dumper;
use MIME::Base64;
my $username = 'mydomain.com\admin';
my $password = 'testpwd';
my $headers = {Accept => 'application/json', Authorization => 'Basic ' . encode_base64($username . ':' . $password)};
my $client = REST::Client->new();
$client->setHost('http://55.170.145.189:2013');
$client->GET(
'/SitePages',
$headers
);
print $client->responseContent();
输出结果如下:
use Data::Dumper;
use MIME::Base64;
my $username = 'mydomain.com\admin';
my $password = 'testpwd';
my $headers = {Accept => 'application/json',
Authorization => 'Basic ' . encode_base64($username . ':' . $password)};
print Dumper $headers;
您的标题中有一个错误的换行符
因此,不妨尝试:
$VAR1 = {
'Accept' => 'application/json',
'Authorization' => 'Basic bXlkb21haW4uY29tXGFkbWluOnRlc3Rwd2Q=
'
};
它将base64行的结尾设置为'
。因此,你可以得到:
my $headers = {Accept => 'application/json',
Authorization => 'Basic ' . encode_base64($username . ':' . $password, '')};
Iirc Rest::Client模块具有自动设置凭据的内置方法,但我现在无法验证。Iirc Rest::Client模块具有自动设置凭据的内置方法,但我现在无法验证。