何らかの理由で、SourceGearは、インストール時に文書化されていないWebサービスを提供します。彼らは実際にはWebサービスがちょっと面倒なので、代わりにAPIを使用するようにデベロッパーに依頼していますが、このAPIはPerl環境では使用できないため、私の場合は問題です。SOAP :: Liteを使用してSourceGear 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'),
]))
);
いずれのヒントもありがとうございます。
サービスが私に1002を返すため、プロンプトの方法がちょうどうまくいくようになりました。私は1002をLoginPlainTextResultとして返すので、strAuthTicketのnull値はまだ分かりません。 – user565793