У меня возникли проблемы с использованием базовой аутентификации в WWW::Mechanize. Я пытаюсь подключиться к Streak API, документация для которой гласит:Настройка основных учетных данных в WWW :: Механизация
подряд использует HTTP Basic Auth подписать каждый запрос с вашим ключом API. Просто установите имя пользователя запроса на ключ API. Поле пароля игнорируется. Все запросы должны быть сделаны через HTTPS, поскольку HTTP-запросы будут игнорироваться.
Вот пример запроса:
curl https://www.streak.com/api/v1/pipelines -u YOUR_API_KEY:
Я могу успешно получить доступ к API, используя curl
таким образом. Тем не менее, я не могу успешно аутентифицироваться с помощью WWW :: Mechanize. Вот что я получил:
#!perl
use warnings;
use strict;
use feature 'say';
use WWW::Mechanize;
my $api = 'https://www.streak.com/api/v1/';
my $mech = WWW::Mechanize->new(autocheck => 0); # don't die on errors
$mech->credentials('my API key here', '');
$mech->get($api . 'pipelines');
say $mech->response->status_line;
say $mech->res->request->as_string;
Запуск мне этот код получает:
401 Unauthorized
GET https://www.streak.com/api/v1/pipelines
Accept-Encoding: gzip
User-Agent: WWW-Mechanize/1.83
аутентификации даже и не пытался. Может ли кто-нибудь предположить, почему это так, и что я могу сделать, чтобы исправить это? Этот код работает в Strawberry Perl 5.24.0.1, если это может иметь какое-либо отношение к нему.
[Отредактировано включить предложение от simbabque рассмотрения объекта запроса.]
Вы сравнили объект HTTP :: Request, который WWW :: Mechanize создает с запросом на завивание? Вы можете использовать '$ mech-> res-> request-> as_string', чтобы получить Perl-часть вещей, и' curl -v' для curl. – simbabque
Интересно. Это показывает, что он вообще не выполняет аутентификацию: 'GET https: // www.streak.com/api/v1/pipelines' ' Accept-Encoding: gzip' 'User-Agent: WWW-Mechanize/1.83 ' –
Я видел то же самое. Очень странно. Если вы используете более длинную строку, она также не делает этого. Но у меня есть код, который использует эту функцию. Мы упускаем из виду то, что я считаю. – simbabque