これは私の最初のPerlスクリプトです。CPANを使用してSOAP::Liteをインストールしましたが、問題がないようです。
単純なHelloWorld.NETWebサービスにアクセスしようとしています。PerlまたはSOAP::LiteがSSL証明書を検証できないことに関連していると思われるエラーが発生します。
500のコードを返しているように見えますが、Webメソッドを正常に呼び出すことができるJavaクライアントを作成したので、問題はWebサービス側にあるとは思いません。
誰かが私がこれをどのように機能させることができるかについて正しい方向に私を向けることができますか?
脚本:
#!/usr/bin/perl
use SOAP::Lite 'trace', 'debug';
$api_ns = "https://www.mydomain.com/edgedev/";
$api_url = "https://www.mydomain.com/edgedev/ws.asmx";
$action = "HelloWorld";
my $soap = SOAP::Lite
-> readable(1)
-> ns($api_ns, 'tns')
-> proxy($api_url)
-> on_action(sub { return "\"$action\""});
print $soap->HelloWorld()->result;
結果
<soap:Envelope
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:tns="https://www.mydomain.com/edgedev/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<tns:HelloWorld xsi:nil="true" />
</soap:Body>
</soap:Envelope>
SOAP::Transport::HTTP::Client::send_receive: 500 Can't connect to www.mydomain.com:443 (certificate verify failed)
Content-Type: text/plain
Client-Date: Tue, 12 Feb 2013 16:40:28 GMT
Client-Warning: Internal response
Can't connect to www.mydomain.com:443 (certificate verify failed)
You can disable hostname check by setting environment variable PERL_LWP_SSL_VERIFY_HOSTNAME=0
LWP::Protocol::https::Socket: SSL connect attempt failed with unknown errorerror:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed at /usr/lib/perl5/vendor_perl/5.10.0/LWP/Protocol/http.pm line 57.
500 Can't connect to www.mydomain.com:443 (certificate verify failed) at ./soaptest.pl line 15