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

RE: [soaplite] SOAP::Lite interoperability with .NET using hrefs

Expand Messages
  • Duncan Cameron
    ... I had a play-around with the xml you showed in your original post and SOAP::Lite doesn t seem to have a problem with hrefs. ================== my $xml =
    Message 1 of 9 , Feb 10, 2003
    • 0 Attachment
      On 2003-02-10 Andy Kelk wrote:
      >Hi,
      >
      >Does anyone have any ideas on this at all?
      >
      >I've pretty much hit a wall and am about to give up with it. I think I
      >might have to investigate other SOAP implementations and see if I can
      >get them to work with .Net
      >
      >
      >
      >
      >--
      >Andy Kelk
      >Head of Integration, Venda
      >andy@...
      >
      >> -----Original Message-----
      >> From: Andy Kelk
      >> Sent: 05 February 2003 16:27
      >> To: soaplite@yahoogroups.com
      >> Subject: RE: [soaplite] SOAP::Lite interoperability with .NET
      >> using hrefs
      >>
      >>
      >> As a follow up to my own message, I can get the data to be
      >> recognised if I get VB.net to use literal style with
      >> "wrapped" ParameterStyle.
      >>
      >> <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>
      >> <VendaCreateProduct xmlns="urn:VendaProducts">
      >> <skuElements>
      >> <skuElement>
      >> ....
      >> </skuElement>
      >> </skuElements>
      >> </VendaCreateProduct xmlns="urn:VendaProducts">
      >> </soap:Body>
      >> </soap:Envelope>
      >>
      >> This is not what I want, however, as the datatypes are lost
      >> and I have no arrays defined.
      >>
      >> It seems that the initial XML that .Net produces is valid but
      >> that the hrefs are confusing SOAP::Lite. Is there any way I
      >> can get around this?
      >>
      >> Thanks
      >>
      >> Andy
      >>
      I had a play-around with the xml you showed in your original post and SOAP::Lite
      doesn't seem to have a problem with hrefs.
      ==================
      my $xml = <<'END';
      <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
      xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
      xmlns:tns="urn:VendaProducts"
      xmlns:types="urn:VendaProducts/encodedTypes"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <soap:Body
      soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
      <tns:VendaCreateProduct>
      <skuElements href="#id1" />
      </tns:VendaCreateProduct>
      <soapenc:Array id="id1" soapenc:arrayType="tns:skuElement[3]">
      <Item href="#id2" />
      <Item href="#id3" />
      <Item href="#id4" />
      </soapenc:Array>
      <tns:skuElement id="id2" xsi:type="tns:skuElement">24</tns:skuElement>
      <tns:skuElement id="id3" xsi:type="tns:skuElement">36</tns:skuElement>
      <tns:skuElement id="id4" xsi:type="tns:skuElement">48</tns:skuElement>
      </soap:Body>
      </soap:Envelope>
      END

      my $ds = SOAP::Deserializer->new;

      my $som = $ds->deserialize($xml);
      my $sku = $som->dataof("/Envelope/Body/VendaCreateProduct/skuElements");
      print "@{$sku->value}";
      ==================
      this prints:-

      24 36 48

      but I had to create a custom deserializer for the skuEelement. Did you create one
      when you sent your orignal post?

      Regards,
      Duncan Cameron
    • Martin Hajduch
      ... i have to confirm this i have axis server returning an array of complex types as hrefs and i haven t encountered any problems (with hrefs) on the client
      Message 2 of 9 , Feb 11, 2003
      • 0 Attachment
        > I had a play-around with the xml you showed in your original post and SOAP::Lite
        > doesn't seem to have a problem with hrefs.

        i have to confirm this
        i have axis server returning an array of complex types as hrefs and i haven't encountered
        any problems (with hrefs) on the client side (SOAP::Lite)
        i'm even not using my own deserializer

        regards,
        martin
      • Andy Kelk
        Hi all, Thanks ever so much for all of the replies. It certainly gave me some new ammo to fire at the problem and I have now found a solution. I have
        Message 3 of 9 , Feb 11, 2003
        • 0 Attachment
          Hi all,

          Thanks ever so much for all of the replies. It certainly gave me some
          new ammo to fire at the problem and I have now found a solution. I have
          succesfully had a .Net client interact and perform its desired actions
          with the SOAP::Lite server.

          Thanks once again to all who helped out. :-)

          Andy


          --
          Andy Kelk
          Head of Integration, Venda
          andy@...
        • Kevin M. Goess
          ... Passing a struct, one of whose members is an array, back and forth between SOAP::Lite and dotNet (a c# class in a dll). Something like this $d = { trkNum
          Message 4 of 9 , Apr 10 8:46 AM
          • 0 Attachment
            On Thursday 10 April 2003 01:04 am, you wrote:
            > > Andy, can you share the secret with us? I'm trying to get
            > > through the same
            > > problem and it would be so helpful to see some source code.
            >
            > I will certainly do my best. What exactly is the problem you're having?

            Passing a struct, one of whose members is an array, back and forth between
            SOAP::Lite and dotNet (a c# class in a dll). Something like this

            $d = { trkNum => "123",
            authCred => "fubar",
            charges => [2,6,9]
            };

            Using Randy Ray's example
            (http://www.perl.com/pub/a/2003/03/26/perlanddotnet.html) of
            serialize_complex_type() I was able to send the struct back and forth using

            Use=System.Web.Services.Description.SoapBindingUse.Literal

            but that doesn't work for sending the array from dotNET to SOAP::Lite because
            the type information isn't included. Changing from 'Literal' to 'Encoded'
            gets the array from dotNet to SOAP::Lite just fine but then dotNet doesn't
            find any data in the response. My current hyposthesis is that I'm missing
            some type information in the SOAP::Lite response, but nothing I've tried has
            yielded good results and since my understanding of SOAP is still a little
            shallow I'm really just groping in the dark, so I thought if I had a working
            example I could work backwards from it.

            I really appreciate your offer of help. I can post as much source code or xml
            as you care to look at, or look at yours--what do you think would be most
            productive?


            --
            Kevin M. Goess
            Software Engineer
            Ensenda, Inc.
            (415) 247-6779
          Your message has been successfully submitted and would be delivered to recipients shortly.