1

以下は、.PL ファイルで使用しているコードです。作成した ENV がここで問題になる可能性があるように感じますが、それを取り出すと、証明書エラーが発生します。411 Length required エラーの周りに何か修正があるのだろうかと思っていました。POST メソッドについて話している人を見つけましたが、私は POST を使用していません。今日、私は perl に放り込まれました。Web サービスに接続するためだけに最善を尽くしています。

#!perl -w

use SOAP::Lite;
$ENV{PERL_LWP_SSL_VERIFY_HOSTNAME}=0;


use Data::Dumper;
print Dumper(SOAP::Lite
-> proxy('mywebsite')
-> GetTicket()
-> result);

これは新しく機能するコードです。Authfail エラーが発生しましたが、これは私が取り組んでいる次の問題です。

4

1 に答える 1

0

Darch は正しかったです。これは、将来のユーザーが参照できるように、完全に機能する動作コードです。

use strict;
use warnings;

# use ../ as lib location
use File::Basename;
use FindBin qw($RealBin);
use lib dirname($RealBin);

use SOAP::Lite;
use Data::Dumper;

$ENV{PERL_LWP_SSL_VERIFY_HOSTNAME}=0;

my $URL = 'myURL';

my $NameSpace = 'myNameSpace';

# this is operation to execute, it could be TicketCreate, TicketUpdate, TicketGet, TicketSearch
# or SessionCreate. and they must to be defined in the web service.
my $Operation = 'GetTicket';

# this variable is used to store all the parameters to be included on a request in XML format, each
# operation has a determined set of mandatory and non mandatory parameters to work correctly, please
# check OTRS Admin Manual in order to get the complete list.
my $XMLData = '
<UserLogin>myUser</UserLogin>
<Password>myPassword</Password>
    <TicketID>1</TicketID>


';

# ---

# create a SOAP::Lite data structure from the provided XML data structure.
my $SOAPData = SOAP::Data
->type( 'xml' => $XMLData );

my $SOAPObject = SOAP::Lite
->uri($NameSpace)
->proxy($URL)
->$Operation($SOAPData);

# check for a fault in the soap code.
if ( $SOAPObject->fault ) {
print $SOAPObject->faultcode, " ", $SOAPObject->faultstring, "\n";
}

# otherwise print the results.
else {

# get the XML response part from the SOAP message.
my $XMLResponse = $SOAPObject->context()->transport()->proxy()->http_response()->content();

# deserialize response (convert it into a perl structure).
my $Deserialized = eval {
    SOAP::Deserializer->deserialize($XMLResponse);
};

# remove all the headers and other not needed parts of the SOAP message.
my $Body = $Deserialized->body();

# just output relevant data and no the operation name key (like TicketCreateResponse).
for my $ResponseKey ( keys %{$Body} ) {
    print Dumper( $Body->{$ResponseKey} );
}
}
于 2012-06-19T14:57:13.383 に答える