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

Simple question about lists / arrays / sequences

Expand Messages
  • rwmjones
    [This is a very basic SOAP-related question. I m implementing a SOAP client for Objective CAML.] What is the proper way to encode lists of things in a SOAP
    Message 1 of 8 , May 25, 2005
    • 0 Attachment
      [This is a very basic SOAP-related question. I'm implementing
      a SOAP client for Objective CAML.]

      What is the proper way to encode lists of things in a SOAP message?

      In Perl (SOAP::Lite), calling a function with an arrayref results
      in a Body which looks like:

      <functionName>
      <soap:Array>
      <item> ... </item>
      <item> ... </item>
      </soap:Array>
      </functionName>

      and that seems a fairly sensible way to encode things. However I
      am also testing against a Java Axis server, and this returns
      arrays quite differently, something like:

      <functionNameResponse>
      <item> ... </item>
      <item> ... </item>
      </functionNameResponse>

      (without an element surrounding the whole array).

      It's very hard to create or parse messages if I have to guess
      which form to use for my lists.

      Rich.
    • Rich Salz
      One if using SOAP RPC encoding, and the other is using literal XML with no encoding. The industry (WS vendors) have decided to move to the latter. Many
      Message 2 of 8 , May 25, 2005
      • 0 Attachment
        One if using "SOAP RPC" encoding, and the other is using "literal XML"
        with no encoding.

        The industry (WS vendors) have decided to move to the latter. Many
        folks still use the former.

        Your call.

        /r$

        --
        Rich Salz Chief Security Architect
        DataPower Technology http://www.datapower.com
        XS40 XML Security Gateway http://www.datapower.com/products/xs40.html
      • Anne Thomas Manes
        Actually, your SOAP client library should be able to handle both encodings. You can always determine the encoding used by checking the WSDL binding. Two
        Message 3 of 8 , May 25, 2005
        • 0 Attachment
          Actually, your SOAP client library should be able to handle both
          encodings. You can always determine the encoding used by checking the
          WSDL binding.
          Two attributes:
          style = rpc | document
          use = encoded | literal

          Anne

          On 5/25/05, Rich Salz <rsalz@...> wrote:
          > One if using "SOAP RPC" encoding, and the other is using "literal XML"
          > with no encoding.
          >
          > The industry (WS vendors) have decided to move to the latter. Many
          > folks still use the former.
          >
          > Your call.
          >
          > /r$
          >
          > --
          > Rich Salz Chief Security Architect
          > DataPower Technology http://www.datapower.com
          > XS40 XML Security Gateway http://www.datapower.com/products/xs40.html
          >
          >
          >
          > -----------------------------------------------------------------
          > This group is a forum for builders of SOAP implementations to discuss implementation and interoperability issues. Please stay on-topic.
          > Yahoo! Groups Links
          >
          >
          >
          >
          >
          >
          >
        • Richard Jones
          ... I m actually writing the SOAP client library ... ... How do I tell the difference? I m sending a SOAP RPC message to the Axis server, it s sending me
          Message 4 of 8 , May 25, 2005
          • 0 Attachment
            Anne Thomas Manes wrote:
            > Actually, your SOAP client library should be able to handle both
            > encodings.

            I'm actually writing the SOAP client library ...

            On Wed, May 25, 2005 at 08:48:50AM -0400, Rich Salz wrote:
            > One i[s] using "SOAP RPC" encoding, and the other is using "literal XML"
            > with no encoding.

            How do I tell the difference? I'm sending a "SOAP RPC" message to the
            Axis server, it's sending me back a "literal XML" message. For
            Perl-based servers, I send them a "SOAP RPC" message and they send me
            back a "SOAP RPC" message. The envelope and HTTP headers look the
            same, but the content has to be parsed in two different ways.

            Rich.

            --
            Richard Jones, CTO Merjis Ltd.
            Merjis - web marketing and technology - http://merjis.com
            Team Notepad - intranets and extranets for business - http://team-notepad.com
          • Rich Salz
            ... Assuming you have time and resources enough to implement SOAP 1.1 doc/lit, SOAP 1.1 rpc/encoded, and SOAP 1.2 doc/lit. :) SOAP 1.2 has no RPC encoding
            Message 5 of 8 , May 25, 2005
            • 0 Attachment
              > Actually, your SOAP client library should be able to handle both
              > encodings.

              Assuming you have time and resources enough to implement SOAP 1.1
              doc/lit, SOAP 1.1 rpc/encoded, and SOAP 1.2 doc/lit. :) SOAP 1.2 has no
              RPC encoding style.

              > You can always determine the encoding used by checking the
              > WSDL binding.

              Right -- you need the WSDL file. Seeing a "SOAP-ENV:encodingStyle"
              attribute is a good hint for SOAP 1.1 rpc, tho.

              > Two attributes:
              > style = rpc | document
              > use = encoded | literal

              Yeah, a WSDL 1.x mistake. There's really only rpc/encoded and doc/lit
              in the "real world" :)

              If you're writing the SOAP toolkit, then you need to prioritize what
              you're gonna implement, and these notes should give you input to that.
              /r$
              --
              Rich Salz, Chief Security Architect
              DataPower Technology http://www.datapower.com
              XS40 XML Security Gateway http://www.datapower.com/products/xs40.html
            • Glen Daniels
              ... Er... what s this then? http://www.w3.org/TR/2003/REC-soap12-part2-20030624/#soapforrpc ... SOAP is somewhat of a chameleon protocol. It allows you to
              Message 6 of 8 , May 29, 2005
              • 0 Attachment
                Rich Salz wrote:
                >>Actually, your SOAP client library should be able to handle both
                >>encodings.
                >
                > Assuming you have time and resources enough to implement SOAP 1.1
                > doc/lit, SOAP 1.1 rpc/encoded, and SOAP 1.2 doc/lit. :) SOAP 1.2 has no
                > RPC encoding style.

                Er... what's this then?

                http://www.w3.org/TR/2003/REC-soap12-part2-20030624/#soapforrpc

                > > You can always determine the encoding used by checking the
                >>WSDL binding.
                >
                > Right -- you need the WSDL file. Seeing a "SOAP-ENV:encodingStyle"
                > attribute is a good hint for SOAP 1.1 rpc, tho.

                SOAP is somewhat of a "chameleon" protocol. It allows you to do lots of
                different things, including for example both lightweight self-describing
                RPC-esque interactions, and more "metadata-driven" interactions with
                generic XML documents. Although the world seems pretty dead-set on the
                latter, with lots of "don't use RPC! It's *pure evil*!" proclamations
                going around, the fact is the former (even sometimes in the absence of
                WSDL) is a perfect valid and yes, even useful style of SOAP usage. Ask
                anyone using a dynamically typed scripting language like PERL or Python.

                I guess the WS-I type FUD about RPC is going to keep XML-RPC alive
                forever, though. :) It's too bad, because the SOAP 1.2 graph data
                encoding is really not bad at all.

                --Glen
              • Rich Salz
                ... Sorry. I should have said it only has an optional RPC, and that it s not widely supported. ... I know. I spent a lot of time doing SOAP 1.0 RPC encoding
                Message 7 of 8 , May 31, 2005
                • 0 Attachment
                  > Er... what's this then?
                  >
                  > http://www.w3.org/TR/2003/REC-soap12-part2-20030624/#soapforrpc

                  Sorry. I should have said it only has an optional RPC, and that it's
                  not widely supported.

                  > WSDL) is a perfect valid and yes, even useful style of SOAP usage. Ask
                  > anyone using a dynamically typed scripting language like PERL or Python.

                  I know. I spent a lot of time doing SOAP 1.0 RPC encoding in ZSI. :)

                  > I guess the WS-I type FUD about RPC is going to keep XML-RPC alive
                  > forever, though. :) It's too bad, because the SOAP 1.2 graph data
                  > encoding is really not bad at all.

                  Agreed.

                  /r$

                  --
                  Rich Salz, Chief Security Architect
                  DataPower Technology http://www.datapower.com
                  XS40 XML Security Gateway http://www.datapower.com/products/xs40.html
                • tim_ewald
                  ... There is no WS-I FUD about RPC. The WS-I Basic Profile allows RPC/literal as well as document/literal services and either can be mapped to an RPC
                  Message 8 of 8 , May 31, 2005
                  • 0 Attachment
                    --- In soapbuilders@yahoogroups.com, Glen Daniels <glen@t...> wrote:

                    There is no WS-I FUD about RPC. The WS-I Basic Profile allows
                    RPC/literal as well as document/literal services and either can be
                    mapped to an RPC programming model. What the BP disallows is SOAP
                    encoding, and we should be clear about why. Nothing in SOAP encoding
                    is intrinsically bad. The problem is really that WSDL describes
                    encoded interfaces using XSD. Since XSD is based on a tree of
                    (typically) named nodes and the SOAP data model that is the
                    foundation for encoding is based on a graph of unnamed structures,
                    and there is no specification that says how to treat the former as
                    the latter, there's a problem there. For instance, what is the SOAP
                    encoding for an XSD element substitution group? One could argue that
                    that case would never arise, but since WSDL didn't restrict what
                    parts of XSD could be used with an encoded service, you have to
                    consider about the possibility. If the BP group's charter had
                    allowed it to produce new things instead of just narrowing existing
                    things, it might have written either a SOAP data model description
                    language or the subset of XSD for use with encoding. But since it
                    could do neither, it dropped encoding altogether. Anyway, none of
                    that stops you from using RPC/literal or doc/literal services as an
                    RPC mechanism, which is what many toolkits do today.

                    Tim-

                    > I guess the WS-I type FUD about RPC is going to keep XML-RPC alive
                    > forever, though. :) It's too bad, because the SOAP 1.2 graph
                    data
                    > encoding is really not bad at all.
                    >
                    > --Glen
                  Your message has been successfully submitted and would be delivered to recipients shortly.