Ich benutze SOAP::Lite
in Perl, um auf einen entfernten Webdienst zuzugreifen, der durch eine WSDL definiert ist. Das bedeutet, dass ich folgendes habe:
use strict;
use Data::Dumper;
use SOAP::Lite +trace => 'debug';
my $service = SOAP::Lite->service('http://path/wsdl');
Bisher alles gut. Das Problem ist, dass ich Zugriff auf das HTTP::Request
-Objekt benötige, um benutzerdefinierte HTTP-Anforderungsheader zu senden (und ich meine nicht Authentifizierungsheader). Es scheint, als könnte ich auf das Anforderungsobjekt zugreifen, nachdem ein erfolgreicher Aufruf durchgeführt wurde:
my $result = $service->getClient('parameters');
print Dumper($service->transport->http_request);
Das gibt mir das korrekte HTTP::Request
-Objekt:
$VAR1 = bless( {
'_content' => '',
'_uri' => undef,
'_headers' => bless( {}, 'HTTP::Headers' ),
'_method' => undef
}, 'HTTP::Request' );
Wenn ich versuche, auf das Anforderungsobjekt zuzugreifen, bevor ein automatischer Aufruf (der Teil $service->getClient
) erfolgt, ist das Transportobjekt leer und ich habe keine Möglichkeit, die Anforderung zu modifizieren. Es scheint, als würde alles gut funktionieren, wenn ich den SOAP::Lite->proxy
-Weg gehen würde -- aber das macht die Nützlichkeit einer vordefinierten Servicedefinition zunichte.
Irgendwelche Ideen, wie ich auf das Anforderungsobjekt aus einer Servicedefinition zugreifen soll, ohne zuerst einen Aufruf zu machen? Ein echtes Huhn-und-Ei-Problem...
Danke!