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

Re: [soaplite] Re: Upgraded client, getting SOAP errors

Expand Messages
  • Martin Kutter
    Hi Tony, the namespaces are defined in SOAP::Constants. Unfortunately they cannot be overridden at run time, because perl s peep-hole optimizer inlines
    Message 1 of 5 , Oct 19, 2008
    • 0 Attachment
      Hi Tony,

      the namespaces are defined in SOAP::Constants. Unfortunately they cannot
      be overridden at run time, because perl's peep-hole optimizer inlines
      constants.

      However, the constants are not used directly by SOAP::Lite, but through
      the following SOAP::Constants variables:

      @SUPPORTED_ENCODING_STYLES
      %XML_SCHEMAS
      %XML_SCHEMA_OF
      %SOAP_VERSIONS

      To change all occurances, do the following:

      BEGIN {
      use SOAP::Lite

      my $url_enc = "http://www.w3.org/2001/06/soap-encoding";
      my $url_env = "http://www.w3.org/2001/06/soap-envelope";

      push @SOAP::Constants::SUPPORTED_ENCODING_STYLES, $url_enc;

      $SOAP::Constants::SOAP_VERSIONS{'1.2'}->{NS_ENC} = $url_enc;
      $SOAP::Constants::SOAP_VERSIONS{'1.2'}->{NS_ENV} = $url_env;

      $SOAP::Contants::XML_SCHEMAS{$url_enc} = 'SOAP::XMLSchemaSOAP1_2';
      $SOAP::Contants::XML_SCHEMAS_OF{$url_enc} = 'XMLSchemaSOAP1_2';
      }

      This should change the (new) namespaces back to the old ones throughout
      SOAP::Lite (untested...).

      Note that SOAP::Constants variables are global - all your SOAP::Lite
      instances in the current process will be affected (may be an issue under
      mod_perl).

      Martin


      Am Samstag, den 18.10.2008, 22:57 +0000 schrieb Tony Gravagno:
      > ...
      > Thank you for the suggestion. This does change the header but the
      > server is now complaining that the client is using the wrong SOAP
      > version. There is a major difference between the headers sent before
      > and after the upgrade.
      >
      > Before upgrade:
      >
      > <SOAP-ENV:Envelope
      > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      > xmlns:SOAP-ENC="http://www.w3.org/2001/06/soap-encoding"
      > xmlns:SOAP-ENV="http://www.w3.org/2001/06/soap-envelope"
      > xmlns:xsd="http://www.w3.org/2001/XMLSchema"
      > SOAP-ENV:encodingStyle="http://www.w3.org/2001/06/soap-encoding">
      >
      > After upgrade:
      >
      > <soap:Envelope
      > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      > xmlns:soapenc="http://www.w3.org/2003/05/soap-encoding"
      > xmlns:xsd="http://www.w3.org/2001/XMLSchema"
      > soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding"
      > xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
      >
      > It looks like the server isn't prepared for the v2003 schemas that
      > come
      > with SOAP::Lite v0.710 compared to v0.55 - and we cannot change the
      > server. As mentioned in my original post, SOAP-ENC:Array is hardcoded
      > into the transaction code and doesn't agree with the newer schema
      > anyway.
      >
      > My current recommendation to the client is to downgrade SOAP::Lite
      > and
      > that probably involves a downgrade of Perl as well, and that may
      > affect
      > yet other dependencies. Better suggestions are welcome.
      >
      > I'm hoping for a quick solution here, but my client is willing to pay
      > to get this resolved quickly if a solution needs to be more involved.
      > So far I have emailed Paul Kulchenko to request compensated services
      > but I have not received a response. I welcome emails from qualified
      > developers with references. You must have a complete understanding of
      > the situation (I believe my postings here have provided that) and a
      > ready proposal for a solution, we cannot fund research or education.
      >
      > Thanks for your time.
      >
      >
      >
      >
      >
    • Tony Gravagno
      For anyone watching this thread, the issue was resolved for the most part with the code that Martin provided. Just add a semi-colon to the end of the using
      Message 2 of 5 , Nov 17, 2008
      • 0 Attachment
        For anyone watching this thread, the issue was resolved for the most
        part with the code that Martin provided. Just add a semi-colon to the
        end of the using statement. :) Martin, thank you very much!

        We also asked Paul Kulchenko for for-fee consultation and appreciate
        his assistance as well.
      Your message has been successfully submitted and would be delivered to recipients shortly.