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

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

Expand Messages
  • Randy J. Ray
    (Apologies to Andy for the duplication, I forgot to Cc soaplite) ... Similar to the response I gave a few days ago concerning arrays, the style .Net is
    Message 1 of 9 , Feb 10, 2003
    • 0 Attachment
      (Apologies to Andy for the duplication, I forgot to Cc soaplite)

      > 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

      Similar to the response I gave a few days ago concerning arrays, the style
      .Net is expecting to see structures in is not the same as what SOAP::Lite
      defaults to. In general, you would need to plug in a routine to serialize your
      data, and you would be best-served by having the hashref be blessed, so that
      you can associate this with a specific class, and not just all hashrefs.

      See the SOAP::Serializer heading in the SOAP::Lite manual page. I realize this
      isn't as helpful as you may have hoped, but I haven't done a lot of .Net
      stuff, either. Some, but not a lot.

      Randy
      --
      rjray@... http://www.rjray.org http://www.svsm.org

      Any spammers auto-extracting addresses from this message will definitely want
      to include uce@... and report@...
    • 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 2 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 3 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 4 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 5 of 9 , Apr 10, 2003
            • 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.