Question

J'interface avec une passerelle de paiement et je n'ai aucune chance avec Net :: SSLeay et son sous-programme post_https. La passerelle de paiement m'a émis un certificat client qui doit être utilisé pour l'authentification. Le perldoc de Net :: SSLeay a l'exemple suivant:

($page, $response, %reply_headers)
         = post_https('www.bacus.pt', 443, '/foo.cgi',           # 3b
              make_headers('Authorization' =>
                           'Basic ' . MIME::Base64::encode("$user:$pass",'')),
              make_form(OK   => '1', name => 'Sampo'),
              $mime_type6, $path_to_crt7, $path_to_key8);

Ma propre version est ci-dessous et renvoie l'erreur Trop d'arguments pour Net :: SSLeay :: post_https :

#!/usr/bin/perl

use strict;
use warnings;
use Net::SSLeay qw(post_https);

my %post = (
    #snip
);

my ($page, $response, %reply_headers) = post_https(
    'www.example.com',
    443,
    '/submit',
    '',
    make_form(%post),
    'text/xml',
    '/path/to/cert',
    '/path/to/key',
);

Pourquoi cette erreur se produit-elle?

Était-ce utile?

La solution

Les nouvelles versions de Net :: SSLeay n'ont pas le prototype des anciennes versions. Lire le code source de l'ancienne et de la nouvelle version, je dirais que le prototype était un bogue (le code qu'il appelle peut gérer plus de variables que ce qui a été annoncé).

La solution que je recommande consiste à mettre à niveau vers une version plus récente de Net :: SSLeay. Si cela n’est pas possible, l’appeler comme suit est un correctif rapide, mais déplaisant.

Autres conseils

La documentation est incorrecte. Dans ma copie (Net :: SSLeay 1.04), post_https est indiqué dans la documentation avec l'exemple que vous citez, mais il est déclaré qu'il accepte au maximum 6 arguments:

sub post_https ($$;***) { do_httpx2(POST => 1, @_) }

Je ne sais pas encore comment le faire fonctionner.

Éditer: essayez d'appeler post_https à l'ancienne, en tant que sous-programme avec & amp; post_https (...).

Vous avez une virgule supplémentaire après '/ chemin / vers / clé'

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top