2017-04-11 5 views
0

donc dans les scripts séparés je crée une chose type de base de données de la liste des biens distribués par créer les entrées du dictionnaire sous la forme:mousse à base de client de service Web de savon - plusieurs valeurs du dictionnaire retour problème python

ID: propriétaire, numéro de maison, code postal, le prix

J'essaye alors d'accéder à cette liste de propriétés par l'intermédiaire d'un service Web de savon par lequel je peux rechercher par le code postal ou la gamme de prix.

Cela fonctionne presque bien, sauf que le retour au client ne retournera qu'un maximum de 1 propriété (même s'il y en a plus avec la spécification donnée).

code de serveur SOAP:

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] 

avec le code client:

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

renvoie la sortie suivante

RECHERCHE PAR:

1 - CP 2 - Prix 3 - Sortie

Sélectionnez une option: 1 S'il vous plaît entrer un code postal: CF24 4AN (stringArray) {
string [] = "Bob", "23", "CF24 4AN", "150000",}

Mais je veux avoir la quasi-totalité de ces valeurs dans une entrée, puis toutes les valeurs de la propriété suivante dans la prochaine, soit

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

J'ai essayé de se débarrasser de la "ligne de retour contenu [k]" dans le côté serveur, qui finit par l'impression la sortie correcte, mais seulement sur le terminal du serveur - le client finit par sortir None.

Je souhaite que le côté client imprime la sortie correcte de plusieurs entrées de dictionnaire, mais que je rencontre des difficultés.

J'ai essayé de créer une liste mais il y a une erreur getChild, donc je ne suis pas sûr de la façon de l'aborder.

Aidez s'il vous plaît!

Répondre

0

L'a triée. Pour toute personne intéressée, 'Array' devait être importé de spyne et l'argument returns = devait être changé en 'Array'