2016-06-28 10 views
0

以下はxmlとなっており、Perlに変換する必要があります。Soap :: Lite Perl基本クエリ

POST /carrierintegrationapi.asmx HTTP/1.1 
Host: carrierintegrationapi.3tlogistics.net 
Content-Type: text/xml; charset=utf-8 
Content-Length: length 
SOAPAction: "https://carrierintegrationapi.3tlogistics.net/Login" 

<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soap:Header> 
    <CiSoapHeader xmlns="https://carrierintegrationapi.3tlogistics.net/"> 
     <Username>cccict</Username> 
     <Password>xxxxxx</Password> 
     <AuthenticationToken>string</AuthenticationToken> 
    </CiSoapHeader> 
    </soap:Header> 
    <soap:Body> 
    <Login xmlns="https://carrierintegrationapi.3tlogistics.net/" /> 
    </soap:Body> 
</soap:Envelope>'; 

私たちの試み:

my $service = SOAP::Lite 
      -> service ('https://carrierintegrationapi.3tlogistics.net/carrierintegrationapi.asmx'); 

my $AuthHeader = SOAP::Header->new(
    name =>'AuthenticationHeader', 
    attr => { xmlns => "https://carrierintegrationapi.3tlogistics.net/" }, 
    value => {Username => 'cccict', Password => 'xxxxxx' }, 
); 
my $result = $service->GetIt($AuthHeader); 

我々はparser.pmで不一致のタグを取得しますか?

+0

@エーザン「お時間をいただきありがとうございます:D」を質問に追加しないでください。不要なノイズで、投稿には含まれません。また、 "xml"(これは "XML"でなければなりません)のような、コードではないものにはインラインコードの書式を使用しないでください。 – ThisSuitIsBlackNot

答えて

0

これまでの回答はありませんので、私はあなたに代案を提示するつもりです。 リクエストを生の投稿として送信できます。 SOAPActionがヘッダーで宣言される可能性があります。正しいSOAPをSOAP :: Liteでコンパイルするのは時間がかかり、ネストされた要素は読みにくいです。また、この例では、小さな変更を加えてすぐに非ブロッキング呼び出しスタイルをサポートしています。

use Mojo::UserAgent; 
use strict; 
use warnings; 

# User-Agent 
my $ua = Mojo::UserAgent->new; 

my $username = 'Username'; 
my $password = 'Password'; 
my $authtoken = 'Token'; 

my $message = <<"SOAP_REQUEST"; 
<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soap:Header> 
    <CiSoapHeader xmlns="https://carrierintegrationapi.3tlogistics.net/"> 
     <Username>$username</Username> 
     <Password>$password</Password> 
     <AuthenticationToken>$authtoken</AuthenticationToken> 
    </CiSoapHeader> 
    </soap:Header> 
    <soap:Body> 
    <Login xmlns="https://carrierintegrationapi.3tlogistics.net/" /> 
    </soap:Body> 
</soap:Envelope> 
SOAP_REQUEST 

my $tx = $ua->post('https://carrierintegrationapi.3tlogistics.net/carrierintegrationapi.asm' => { 'Hello' => "I'm a Header" } => $message); 
print $tx->res->body; 
+0

こんにちは、ありがとうございました。この行に構文エラーがあります。私の$ ua = Mojo :: UserAgent - >新しい; – cccict

+0

Mojo :: UserAgentをCPAN経由でインストールする必要があります。シェル "cpan install Mojo :: UserAgent"を入力します。 – user3606329

関連する問題