Loading ...
Sorry, an error occurred while loading the content.

6238RE: [soaplite] Re: How to get errors

Expand Messages
  • Oeschey, Lars (I/ET-83, extern)
    Oct 1, 2008
    • 0 Attachment
      I got a bit further on this, though not very successful. Using the
      ->trace method of SOAP::Lite, I could see what I'm sending and
      receiving:

      sent:

      <?xml version="1.0" encoding="UTF-8"?>
      <SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
      xmlns:SOAP-ENC="http://schemas.xmlsoap.
      org/soap/encoding/"
      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:teInput xmlns:namesp1="http://soap.data.inform.com">
      <c-gensym3 xsi:type="xsd:string">MAN9999999/1</c-gensym3>
      <c-gensym5 xsi:type="xsd:string">LAD1020</c-gensym5>
      <c-gensym7 xsi:type="xsd:int">1</c-gensym7>
      </namesp1:teInput>
      </SOAP-ENV:Body>
      </SOAP-ENV:Envelope>

      received:

      <?xml version="1.0" encoding="UTF-8"?>
      <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
      xmlns:soap-enc="http://schemas.xmlsoap.org/soap/encoding/"
      xmlns:xs="http://www.
      w3.org/2001/XMLSchema"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <soap:Body>
      <soap:Fault>
      <soap:faultcode>soap:Server</soap:faultcode>
      <soap:faultstring>IdSoapRpcXml.TIdSoapReaderXML.GetParameter: Parameter
      "in2" not found in list
      "c-gensym3,c-gensym5,c-gensym7"</soap:faultstring>
      <detail xsi:type="EIdSoapRequirementFail"></detail>
      </soap:Fault>
      </soap:Body>
      </soap:Envelope>

      looking at the wsdl file, I see that the third parameter should be
      string, while I send int (though I didn't do anything, somewhere it gets
      autotyped):

      <message name="teInput">
      <part name="in0" type="xs:string"/>
      <part name="in1" type="xs:string"/>
      <part name="in2" type="xs:string"/>
      </message>

      So this is the reason, why it's denied. But: Why don't I get the fault
      parameters? With this:

      use SOAP::Lite;# +trace => [qw(all)];
      my $soap= SOAP::Lite
      ->uri('http://soap.data.inform.com')
      ->proxy('http://audiinsa00220.in.audi.vwg:3003/soap/');

      my $som=$soap->teInput("MAN9999999/1", "LAD1020", "1");

      if ($som->fault) {
      print $som->faultdetail;
      print $som->faultcode;
      print $som->faultstring;
      print $som->faultactor;
      }

      I only get:
      500 Internal Server Error at soaptest.pl line 6

      and: How can I force the parameter to be a string?

      Lars
    • Show all 15 messages in this topic