Je rencontre des problèmes lors de l'utilisation de l'authentification de base dans WWW::Mechanize. Je suis en train de se connecter au Streak API, la documentation qui stipule:Définition des informations d'authentification de base dans WWW :: Mechanize
Streak utilise HTTP Basic Auth pour signer chaque demande avec votre clé API. Il suffit de définir le nom d'utilisateur de la requête sur la clé API. Le champ de mot de passe est ignoré. Toutes les demandes doivent être effectuées via HTTPS car les requêtes HTTP seront ignorées.
Voici une demande d'échantillon:
curl https://www.streak.com/api/v1/pipelines -u YOUR_API_KEY:
je peux accéder avec succès l'API à l'aide curl
de cette façon. Cependant, je ne parviens pas à m'authentifier avec succès en utilisant WWW :: Mechanize. Voici ce que j'ai:
#!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;
me exécution de ce Code devient:
401 Unauthorized
GET https://www.streak.com/api/v1/pipelines
Accept-Encoding: gzip
User-Agent: WWW-Mechanize/1.83
L'authentification est même pas tentée. Quelqu'un peut-il suggérer pourquoi cela pourrait être le cas, et ce que je pourrais faire pour le réparer? Ce code est en cours d'exécution dans Strawberry Perl 5.24.0.1, si cela peut avoir quelque chose à voir avec cela.
[Edité pour inclure la suggestion de simbabque d'examiner objet de requête.]
Avez-vous comparé l'objet HTTP :: Request que WWW :: Mechanize crée avec la requête curl? Vous pouvez utiliser '$ mech-> res-> request-> as_string' pour obtenir le côté Perl des choses, et' curl -v' pour curl. – simbabque
Intéressant. Cela révèle qu'il ne fait pas l'authentification du tout: 'GET https: // www.streak.com/api/v1/pipelines' ' Accepter-Encodage: gzip' 'Utilisateur-Agent: WWW-Mechanize/1.83 ' –
J'ai vu la même chose. Très étrange. Si vous fournissez une chaîne plus longue, elle ne le fait pas non plus. Mais j'ai du code qui utilise cette fonctionnalité. Nous négligeons quelque chose que je crois. – simbabque