2017-04-11 4 views
0

So in separaten Scripts erstellen ich eine verteilte Eigenschaft Liste Datenbanktyp, was sie in Form Wörterbucheinträge erstellen:Schaumseife Web-Service-Client - mehrere Wörterbuch Werte zurückgeben Problem Python

ID: Eigentümer, Hausnummer, Postleitzahl, Preis

Ich versuche dann, diese Eigenschaftsliste durch einen Soap-Webdienst zu erreichen, wobei ich nach Postleitzahl oder Preisspanne suchen kann.

Es funktioniert fast gut, außer die Rückgabe an den Client wird nur maximal 1 Eigenschaft zurückgeben (auch wenn es mehr mit der angegebenen Spezifikation gibt).

Seife Servercode:

from spyne import Application, rpc, ServiceBase, Iterable, Integer, Unicode 
from spyne.protocol.soap import Soap11 
from spyne.server.wsgi import WsgiApplication 
from spyne.decorator import srpc 
import Pyro4 

class PropertySearch(ServiceBase): 

    @srpc(Unicode, _returns=Iterable(Unicode)) 
    def postcode_search(searchfor): 

     warehouse = Pyro4.Proxy("PYRONAME:propertylist.warehouse") 
     contents = warehouse.list_contents() 

     for k in contents: 
      if searchfor in contents[k][2]: 
       print(k, ":", contents[k]) 
       return contents[k] 

mit Client-Code:

def postcode_option(): 
    searchfor = input("Please enter a postcode: ") 
    print(hello_client.service.postcode_search("{}".format(searchfor))) 

gibt die folgende Ausgabe

SUCHE NACH:

1 - PLZ 2 - Preis 3 - Beenden

Wählen Sie eine Option: 1 Bitte geben Sie eine Postleitzahl: CF24 4AN (string) {
string [] = "Bob", "23", "CF24 4AN", "150000",}

Aber ich möchte im wesentlichen alle diese Werte in einem Eintrag haben und dann alle Werte der nächsten Eigenschaft in der nächsten, dh

string [] = „Bob, 23, C F24 4AN, 150000" , "Jim, 24, CF24 4AN, 100000",}

Ich habe versucht, das Loswerden der "Rückkehr Inhalt [k]" Zeile in der Server-Seite, die das Drucken endet die korrekte Ausgabe, aber NUR auf dem Server-Terminal - der Client gibt schließlich None aus.

Ich möchte, dass die Client-Seite die korrekte Ausgabe mehrerer Wörterbucheinträge druckt, aber ich kämpfe.

Ich habe versucht, eine Liste zu erstellen, aber dort endet ein getChild-Fehler, so dass ich mir nicht sicher bin, wie ich das angehen soll.

Hilfe bitte!

Antwort

0

Sortiert es. Für alle Interessierten musste 'Array' aus Spyne importiert werden und das Argument returns = musste in 'Array' geändert werden.

Verwandte Themen