Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 4 sur 4
  1. #1
    Invité de passage
    Homme Profil pro
    Inscrit en
    juillet 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : juillet 2011
    Messages : 4
    Points : 0
    Points
    0

    Par défaut Soap lite: Object reference not set to an instance of an object

    Bonjour,

    J'essaie d'utiliser un webservice déjà existant. Après de nombreux échecs (je suis nouveau à la fois en Perl et en WS ) et de recherches sur le net, j'arrive enfin à un semblant de communication avec le server et j'ai l'erreur suivante :
    soap:Server, Server was unable to process request. ---> Object reference not set to an instance of an object.

    Mon script :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    use SOAP::Lite  +trace =>  'debug';
     
    my $var = SOAP::Data->new(name => 'NTLogin', value => "123456", type =>'s:string');
     
    my $resultLogin = SOAP::Lite
      -> uri('http://xxxxxx.org')
      -> proxy('http://yyyyyy/zzzzzz/directory.asmx')
      -> on_action( sub { join '/', @_ } )
      -> GetUIDFromNTLogin($var);
     
    print "lets test it...\n\n";
     
    unless ($resultLogin->fault()) {
      print "works !\n\n";
      print $resultLogin->result();
    } else {
      print "error:\n";
      print join ', ', 
        $resultLogin->faultcode, 
        $resultLogin->faultstring;
    }
    La trace :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    SOAP::Transport::HTTP::Client::send_receive: POST http://yyyyyy/zzzzzz/directory.asmx
    Accept: text/xml
    Accept: multipart/*
    Content-Length: 529
    Content-Type: text/xml; charset=utf-8
    SOAPAction: http://tempuri.org/GetUIDFromNTLogin
     
    <?xml version="1.0" encoding="UTF-8"?><SOAP-ENV:Envelope xmlns:xsi="http://www.w
    3.org/1999/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/e
    ncoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="
    http://www.w3.org/1999/XMLSchema" SOAP-ENV:encodingStyle="http://schemas.xmlsoap
    .org/soap/encoding/"><SOAP-ENV:Body><namesp1:GetUIDFromNTLogin xmlns:namesp1="ht
    tp://tempuri.org"><NTLogin xsi:type="s:string">123456</NTLogin></namesp1:GetUI
    DFromNTLogin></SOAP-ENV:Body></SOAP-ENV:Envelope>
    SOAP::Transport::HTTP::Client::send_receive: HTTP/1.1 500 Internal Server Error
    Cache-Control: private
    Date: Wed, 23 May 2012 16:39:13 GMT
    Server: Microsoft-IIS/6.0
    Content-Length: 441
    Content-Type: text/xml; charset=utf-8
    Client-Date: Wed, 23 May 2012 16:39:13 GMT
    Client-Peer: 111.222.333.444:80
    Client-Response-Num: 1
    Set-Cookie: BIGipServerEquitiesDerivatives-http=1234567890.12345.0000; path=/
    X-AspNet-Version: 2.0.50727
    X-Powered-By: ASP.NET
     
    <?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.
    xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance
    " xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><soap:Fault><faultcode
    >soap:Server</faultcode><faultstring>Server was unable to process request. ---&g
    t; Object reference not set to an instance of an object.</faultstring><detail />
    </soap:Fault></soap:Body></soap:Envelope>
    lets test it...
     
    error:
    soap:Server, Server was unable to process request. ---> Object reference not set
     to an instance of an object.Press any key to continue . . .
    J'ai trouvé pas mal de topic sur ce sujet, mais très peu de réponses... Quelqu'un aurait-il une idée là-dessus ?

    Merci beaucoup d'avance

    Will1v,

  2. #2
    Invité de passage
    Homme Profil pro
    Inscrit en
    juillet 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : juillet 2011
    Messages : 4
    Points : 0
    Points
    0

    Par défaut

    Hello,

    Aucune réponse, personne n'a d'idée ?... Vraiment ?
    Au moins un début de piste ?

    Merci beaucoup,

    Will1v

  3. #3
    Membre Expert

    Homme Profil pro Laurent R.
    Conseil - Consultant en systèmes d'information
    Inscrit en
    mai 2012
    Messages
    1 156
    Détails du profil
    Informations personnelles :
    Nom : Homme Laurent R.
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : mai 2012
    Messages : 1 156
    Points : 2 297
    Points
    2 297

    Par défaut

    Bonjour,

    je ne connais pas du tout les web services et encore moins le paquetage SOAP::Lite, mais je me demande si tu ne dois pas commencer par créer une instance de ton objet en invoquant une méthode de type SOAP::Lite->new.

    C'est ce que le message d'erreur suggère: "Object reference not set
    to an instance of an object". Tu as une référence vers un objet, mais elle ne pointe pas vers un objet.

    C'est juste une idée qui me vient comme ça, encore une fois je ne connais pas du tout ce module.

  4. #4
    Invité de passage
    Homme Profil pro
    Inscrit en
    juillet 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : juillet 2011
    Messages : 4
    Points : 0
    Points
    0

    Par défaut

    Bonjour Lolo78,

    Merci beaucoup pour ta réponse !

    Je ne crois pas que ce soit ça, parce que je n'ai jamais vu d'utilisation de new pour instancier SoapLite dans tous les exemples que j'ai pu croiser (notamment les exemples officiels).

    Après quelques recherches, je trouve effectivement qu'on peut construire différemment, en utilisant un new, comme dans cet exemple :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    use SOAP::Lite +trace => [ 'debug' ];
     
    my $req1 = SOAP::Lite->new(
        readable => 1,
        autotype => 0,
        proxy    => 'https://ics2wstest.ic3.com/commerce/1.x/transactionProcessor',
    );
     
    $req1->requestMessage(
        \SOAP::Data->new(
            name => 'item',
            attr => { foo => '0' },
            value => \SOAP::Data->new(
                name => 'foo',
                value => 1,
            ),
         ),
    );
    J'essaie d'adapter mon code à ça pour voir si ça aide, pour l'instant c'est un échec.

    Si quelqu'un a une autre idée, je prends toutes les pistes !

    Merci encore pour votre aide,

    Will1v

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •