WWW::Mechanizeで基本認証の使用に問題があります。WWW :: Mechanizeの基本認証資格情報を設定する
ストリークは、HTTP Basic Authを使用して各リクエストにあなたのAPIキーで署名します。Streak APIに接続しようとしています。要求のユーザー名をAPIキーに設定するだけです。パスワードフィールドは無視されます。 HTTPリクエストは無視されるため、すべてのリクエストはHTTPS経由で行う必要があります。
curl https://www.streak.com/api/v1/pipelines -u YOUR_API_KEY:
私は正常にこの方法でcurl
を使用してAPIにアクセスすることができます:ここでは
は、サンプルの要求です。しかし、私は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から提案を含めるように編集。]
WWW :: Mechanizeが作成したHTTP :: Requestオブジェクトをcurlリクエストと比較しましたか? '$ mech-> res-> request-> as_string'を使って、Perl側のものを得ることができ、カールのために' curl -v'を使うことができます。 – simbabque
興味深い。これは、認証をまったく行っていないことを示しています。 'GET https:// www.streak.com/api/v1/ipipeline' ' Accept-Encoding:gzip' 'User-Agent:WWW-Mechanize/1.83 ' –
私は同じことを見た。非常に奇妙な。長い文字列を指定した場合は、それも行いません。しかし、私はこの機能を使用するコードを持っています。私は信じるものを見落としている。 – simbabque