Frage

ich mit einem Zahlungsgateway bin Schnittstelle und kein Glück mit Net :: SSLeay und seinem post_https Unterprogramm mit. Die Payment-Gateway hat mir ein Client-Zertifikat ausgestellt, das für die Authentifizierung verwendet werden muss. Der Net :: SSLeay Perldoc hat das folgende Beispiel:

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

Meine eigene Version ist unten und gibt den Fehler Zu viele Argumente für 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',
);

Warum wird dieser Fehler auftritt?

War es hilfreich?

Lösung

Neue Versionen von Net :: SSLeay nicht über den Prototyp, die alten Versionen haben. Lesen Sie die Quelle der alten und neuen Version, die ich der Prototyp einen Fehler sagen würde (der Code kann es mehr Variablen als angegeben behandeln Anrufe) war.

Die Lösung, die ich empfehlen ist ein Upgrade auf eine neuere Version von Net :: SSLeay. Wenn das nicht möglich ist, nennt es u post_https kann ein schnelles, aber hässlich fix sein.

Andere Tipps

Die Dokumentation ist falsch. In meiner Kopie (Net :: SSLeay 1,04) post_https ist in der Dokumentation mit dem gezeigten Beispiel, die Sie zitieren, ist aber maximal 6 Argumente nehmen erklärt:

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

Ich bin noch nicht sicher, wie es funktioniert.

Edit: Versuchen Sie post_https auf die altmodische Art und Weise, wie ein Unterprogramm mit & post_https (...)

aufrufen.

Sie haben ein zusätzliches Komma nach '/ path / to / Schlüssel'

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top