Pregunta

Estoy interactuando con una pasarela de pago y no tengo suerte con Net :: SSLeay y su subrutina post_https. La pasarela de pago me ha emitido un certificado de cliente que debe utilizarse para la autenticación. El perldoc Net :: SSLeay tiene el siguiente ejemplo:

($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);

Mi propia versión está debajo y devuelve el error Demasiados argumentos para 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',
);

¿Por qué ocurre este error?

¿Fue útil?

Solución

Las nuevas versiones de Net :: SSLeay no tienen el prototipo que tienen las versiones anteriores. Al leer la fuente de la versión anterior y la nueva, diría que el prototipo era un error (el código al que llama puede manejar más variables de las que se anuncian).

La solución que recomiendo es actualizar a una versión más nueva de Net :: SSLeay. Si eso no es posible, llamarlo como & amp; post_https puede ser una solución rápida pero fea.

Otros consejos

La documentación es incorrecta. En mi copia (Net :: SSLeay 1.04) post_https se muestra en la documentación con el ejemplo que usted cita, pero se declara que toma un máximo de 6 argumentos:

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

Todavía no estoy seguro de cómo hacer que funcione.

Editar: intente llamar post_https a la antigua usanza, como una subrutina usando & amp; post_https (...).

Tienes una coma adicional después de '/ path / to / key'

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top