Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    207

    Invocare web service da PERL

    Devo invocare un WebService .NET da Perl; ho trovato in giro il seguente codice:

    Codice PHP:
    my $soap SOAP::WSDL->new();
    $soap->wsdl('http://server/path/to.wsdl');
    $soap->on_action(sub { return $_[0].$_[1]; });      # I find this helps with .NET services.
    $soap->proxy('http://server/path/to/service.asmx'); # For speed: not necessary as SOAP::WSDL can find it in the WSDL.
    $soap->wsdlinit(caching => 1);

    my $som $soap->HelloWorld(); 
    Ovviamente ho sostituito i percorsi di esempio con quelli giusti. Nel mio WebService c'è una funzione "HelloWorld" che non richiede parametri, ma quando lo script in Perl arriva a chiamarla mi viene stampato il seguente messaggio:

    Can't locate object method "HelloWorld" via package "SOAP::WSDL" at ws.pl line 18

    Chi sa dirmi come risolvere?

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    207
    Ho cambiato il codice precedente con questo codice:

    Codice PHP:
    print SOAP::Lite->service('http://server/path/to.wsdl')->HelloWorld() . "\n"
    e ora mi dice

    Use of uninitialized value in concatenation (.) or string at ws.pl line 19.

    Ho visto che la funzione "HelloWorld" non viene proprio eseguita (ho messo in debug il web service .NET); come si spiega ciò?

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    207
    Nessuno l'ha mai fatto??

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    207
    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());
        }
    }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.