У меня большое приложение, которое не может подключиться к конечной точке, работающей на том же сервере, что и клиент.
Тот же сервер работает с других клиентских хостов, поэтому он локально связан с модулями perl и / или настройкой ssl.Я также могу подключиться к серверу с помощью другого локального клиента, написанного также на C.
Я воссоздал проблему здесь:
#!/usr/bin/perl
use strict;
use SOAP::Lite +trace => 'debug';
my $soap;
$soap = SOAP::Lite->new(proxy => "https://localhost:1800", ssl_opts => [
SSL_verify_mode => 0 ])->on_fault(\&report_error);
$soap->ns('urn:edge', 'ns');
my $som = $soap->call('edgeWsdl');
sub report_error {
print "SOAP error: " . $_[1] . "\n";
}
Это генерирует:
SOAP::Transport::HTTP::Client::send_receive: POST https://localhost:1800
HTTP/1.1
Accept: text/xml
Accept: multipart/*
Accept: application/soap
Content-Length: 417
Content-Type: text/xml; charset=utf-8
SOAPAction: "urn:edge#edgeWsdl"
<?xml version="1.0" encoding="UTF-8"?><soap:Envelope
soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:ns="urn:edge" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soap:Body>
<ns:edgeWsdl xsi:nil="true" /></soap:Body></soap:Envelope>
SOAP::Transport::HTTP::Client::send_receive: 500 Can't connect to
localhost:1800
Content-Type: text/plain
Client-Date: Wed, 03 Oct 2018 23:13:27 GMT
Client-Warning: Internal response
Can't connect to localhost:1800
SOAP error:
not well-formed (invalid token) at line 1, column 3, byte 3 at
/usr/lib64/perl5/vendor_perl/XML/Parser.pm line 187.
Can't connect to localhost:1800
Поскольку я могу подключиться с других клиентов, это не проблема сети или брандмауэра.Как я могу отследить это?Уверен, что это проблема SSL.Но не знаю, как обнаружить проблему.
Билл