Sono riuscito ad invocare il Web Service .NET da Perl e per un anno ha funzionanto tutto correttamente.
Ora di punto in bianco non funziona più e mi viene restituito il codice di errore 500 (il Web service c'è ed è funzionante, ma sembra che lo script Perl non provi proprio ad invocarlo e finisce sempre nel ramo "else" del codice sottostante.
Questo è il pezzo di codice che utilizzo, opportunamente ripulito e invocante un diverso Web Service rispetto a quello che uso. C'è qualcosa che non va?
Codice PHP:
sub my_search_handler {
my $ws_address = 'http://webservices.tiscali.com/EmailServices.asmx';
my $message = '<?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>
<IsValidEmail xmlns="http://webservices.tiscali.com/">
<email>ciao@email.it</email>
</IsValidEmail>
</soap:Body>
</soap:Envelope>';
my $userAgent = LWP::UserAgent->new();
my $request = HTTP::Request->new(POST => $ws_address);
request->header(SOAPAction => 'http://webservices.tiscali.com/IsValid');
$request->content($message);
$request->content_type("text/xml; charset=utf-8");
my $response = $userAgent->request($request);
if($response->is_success | $response->code() eq '405')
{
#fai certe operazioni
}
else
{
printf("Cannot contact server. Error [%s]\n", $response->code());
}
}