2009-08-08 3 views
1

aufrufen Ich brauche einen Webservice über XML-RPC. Der Webservice ist in Python geschrieben, und eines der Argumente ist eine Python-Liste.Webdienst erfordert Python-Liste als Argument. Müssen von C#

Ich verwende XML-RPC.NET, um alle Methoden aufzurufen, und es funktioniert gut, außer für diejenigen, die ein Python-Listenargument erfordern.

Was wäre die entsprechende Struktur in C#, die, wenn ich als Argument übergeben würde, vom Webdienst als Python-Liste interpretiert würde? Ich habe Python-Code in einer Zeichenfolge ausprobiert. Ich habe auch String-Arrays ausprobiert.

Jedes Beispiel wäre wirklich hilfreich.

Danke, V

Antwort

2

Sie müssen Arrays von System.Object [] verwenden. Siehe http://www.xml-rpc.net/faq/xmlrpcnetfaq.html#1.12 Diese entsprechen im Allgemeinen den Python-Listen.

+0

Danke Christopher. Ein Array von Objekten, die korrekt verschachtelt wurden, funktionierte tatsächlich, um eine Python-Liste zu simulieren. – Varun

1

Was müssen Sie in dem zugrunde liegenden XML ist ein <array> Tag zu erhalten, z.B.

<array> 
    <data> 
     <value><i4>12</i4></value> 
     <value><string>Egypt</string></value> 
     <value><boolean>0</boolean></value> 
     <value><i4>-31</i4></value> 
    </data> 
</array> 

für Python-Liste

[12, 'Egypt', False, -31] 

Wie Sie XML-RPC.NET erhält einen <array>-Tag mit einem heterogenen "Array" zu emittieren, bin ich nicht sicher. Haben Sie eine Möglichkeit, das XML, das für bestimmte C# -Eingabe-Konstrukte/Datenstrukturen ausgegeben wird, zu visualisieren?

+1

[12, 'Ägypten', Falsch, -31] – hughdbrown

+0

@hughdbrown, tx für das Spotting, bearbeitet, um meinen Tippfehler zu beheben. –

+0

Danke Jungs. Ich habe ein Array von Objekten verwendet, wie von Christopher vorgeschlagen, und dann versucht, die Python-Liste der von Ihnen vorgeschlagenen XML-Struktur zuzuordnen. Es funktionierte. Ich hatte eine komplizierte verschachtelte Liste, so dass es eine Weile dauerte. Auch konnte ich visualisieren, dass die XML generiert wird, indem Sie den Tracer verwenden, der mit XML-RPC.NET geliefert wird: http://xml-rpc.net/faq/xmlrpcnetfaq.html#5.1 Vielen Dank! – Varun