何らかの理由で、 SourceGearは、そのインストールで文書化されていない Web サービスを提供しています。彼らは実際には開発者に代わりに API を使用するように依頼しています。これは Web サービスがややこしいためですが、これは私の場合は問題です。なぜなら、この API は Perl 環境では使用できないためです。私の特定のケースに対する彼らの解決策は、Web サービスを使用することです。
これは問題にはなりません。SOAP::Liteを使用して、過去に同じ方法でいくつかの Web サービスに接続しました。しかし、SOAP 呼び出しをどこで行うことができるかを知らない場合、ドキュメントの欠如は大きな混乱を招きます。これらの呼び出しを行う場所と方法を解読する XML しかありません。本当の SOAP の天才がこの点で私を助けてくれたら最高です。
これは、ログイン コールと予想される応答の例です。
リクエスト
POST /fortress/dragnetwebservice.asmx HTTP/1.1
Host: velecloudserver
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://www.sourcegear.com/schemas/dragnet/LoginPlainText"
<?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:Body>
<LoginPlainText xmlns="http://www.sourcegear.com/schemas/dragnet">
<strLogin>string</strLogin>
<strPassword>string</strPassword>
</LoginPlainText>
</soap:Body>
</soap:Envelope>
応答
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length
<?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:Body>
<LoginPlainTextResponse xmlns="http://www.sourcegear.com/schemas/dragnet">
<LoginPlainTextResult>int</LoginPlainTextResult>
<strAuthTicket>string</strAuthTicket>
</LoginPlainTextResponse>
</soap:Body>
</soap:Envelope>
どうにかしてこれを組み立てる方法を探しています。これは私のPerlの例です:
my $soap = SOAP::Lite -> uri ('http://velecloudserver/fortress/dragnetwebservice.asmx') -> proxy('http://velecloudserver/fortress/dragnetwebservice.asmx/LoginPlainText');
my $som = $soap->call('LoginPlainText', SOAP::Data->name('LoginPlainText')->value(
\SOAP::Data->value([
SOAP::Data->name('strLogin')->value( 'admin' ),
SOAP::Data->name('strPassword')->value('Adm1234'),
]))
);
どんなヒントでもいただければ幸いです。