2017-12-06 4 views
3

Vor Jahren schrieb ich ein paar Perl SOAP :: Transport :: HTML-Server unter Windows Server 2000. Wenn der Service-Return-String enthielt Zeichen, die die Soap-Umschlag, Perl automatisch die Zeichenkette als base64, die der Client dann behandelt.Perl SOAP-Server nicht mehr zurück base64

Kürzlich wurden die Skripts auf einen Computer mit Server 2008 und Perl 5.22.1 verschoben. Der Service funktioniert einwandfrei, außer wenn die Rückgabezeichenfolge solche Zeichen enthält: Die Zeichenfolge ist nicht codiert und die SOAP-Hülle kehrt zum leeren Client zurück.

Wie kann ich meine Rückkehr Zeichenfolge zu base64 zwingen? Natürlich kann ich MIME :: base64 verwenden, um die Zeichenfolge zu codieren, aber der SOAP-Umschlag zeigt immer noch Typtext an und wird auf der Clientseite nicht korrekt konvertiert.

use SOAP::Transport::HTTP; 
SOAP::Transport::HTTP::CGI 
-> dispatch_to('MyMod') 
-> handle; 
+0

Ich weiß nichts über Perl, aber ich habe den falschen Content-Typ bei der Verwendung von Node-Soap, und ich musste schließlich die SOAP-Anfrage manuell erstellen. Tragischerweise wird SOAP nicht von allen Sprachen gleich gehandhabt, und was einige Module erwarten, kann einfach nicht durch Module in anderen Sprachen bereitgestellt werden. Ultimative langfristige Lösung: Verwenden Sie REST. –

Antwort

0

ich landete mit MIME :: Base64 die Zeichenfolge zu kodieren und finagled die Antwort, so dass der Client die Antwort String als Base64 dekodieren würde, auch wenn die Seife Antwort weiter Typ String anzuzeigen. Funktioniert für mich - gut genug für diese ganz spezielle Anwendung.

Noch konnte nicht finden, wie man sonst Perl erzwingt, um die Antwort zu kodieren.

Verwandte Themen