[Fedora-suds-list] How to set SOAP-ENC:arrayType

Jeff Ortel jortel at redhat.com
Thu Nov 19 15:05:55 UTC 2009


Hey Bill -

On 11/18/2009 08:18 PM, Bill Watts wrote:
> Hi,
>
> I have been using suds for about a week now, and I am very impressed
> with the capabilities and ease of use of this API. Outstanding work!

Thanks :)

>
> I am using suds to work with a fairly complex WSDL, and have almost
> everything working, with the exception of the arrayType encoding. I
> downloaded and installed the beta of 0.3.8 because I saw a posting
> stating that the beta supports setting the arrayType. After spending a
> couple of hours grepping through the code and trying different things, I
> am still unable to determine how to set the arrayType.
>
> I can make successful requests using SoapUi, and the section I am trying
> to generate looks like this:
>
> <item xsi:type="bus:parameterValue">
>
> <name xsi:type="xsd:string">owner_id</name>
>
> <value xsi:type="soapenc:Array" *soapenc:arrayType="bus:parmValueItem[]"*>
>
> <item xsi:type="bus:simpleParmValueItem">
>
> <use xsi:type="xsd:string">321</use>
>
> </item>
>
> </value>
>
> </item>
>
> The API is generating:
>
> <item xsi:type="ns0:parameterValue">
>
> <ns0:name xsi:type="ns2:string">owner_id</ns0:name>
>
> <ns0:value xsi:type="SOAP-ENC:Array">
>
> <item xsi:type="ns0:simpleParmValueItem">
>
> <ns0:inclusive xsi:type="ns2:boolean"/>
>
> <ns0:display xsi:type="ns2:string"/>
>
> <ns0:use xsi:type="ns2:string">321</ns0:use>
>
> </item>
>
> </ns0:value>
>
> </item>

The enhancements discussed in 0.3.8 are not yet included in the documentation (looks like 
I need to get it updated).  What you're doing here is correct according to the 
documentation but does not take advantage of the 0.3.8 enhancements.  Based on your code 
and without seeing the WSDL, I'd suggest (think) you want to do:

def createParameter(client, name, value):
   item = client.factory.create('parameterValue')
   item.name = name
   spvi = client.factory.create('simpleParmValueItem')
   spvi.use = value
   item.value = [spvi]

In the 0.3.8 rpc/encoded enhancement, you no longer want (or need to) create the 
SOAP-ENC:Array.

You can also join me on IRC FreeNode #suds and we can discuss further.

>
> Here is my code:
>
> def createParameter(client, name, value):
>
> item = client.factory.create('parameterValue')
>
> item.name = name
>
> item.value = client.factory.create('SOAP-ENC:Array')
>
> spvi = client.factory.create('simpleParmValueItem')
>
> spvi.use = value
>
> item.value.item = [spvi]
>
> The WSDL is almost 1MB, so I won’t include it here. Any help is very
> much appreciated.
>
> Thanks,
>
> -Bill
>
>
>
> _______________________________________________
> fedora-suds-list mailing list
> fedora-suds-list at redhat.com
> https://www.redhat.com/mailman/listinfo/fedora-suds-list

-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 5126 bytes
Desc: S/MIME Cryptographic Signature
Url : http://lists.fedoraproject.org/pipermail/suds/attachments/20091119/cdc266cc/attachment.bin 


More information about the suds mailing list