2017-12-28 34 views
0

Ich benutze web2py pysimplesoap und ich versuche, Daten vom Server zu bekommen. Nachdem ich die Methode aufgerufen habe, erhalte ich eine Antwort, aber im XML sind keine Daten enthalten. Irgendwelche Vorschläge?Python web2py pysimplesoap Client Umschlag Daten

Hier ist mein Code

url = "https://www.xxx.ss/demo/aaa/aaa" 
# 


xml = ("""<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:cet="http://xxxx.yy"> 
     <soapenv:Header/> 
     <soapenv:Body> 
      <cet:GetEmployedElement> 
      <!--Zero or more repetitions:--> 
      <cet:GetEmployed> 
       <cet:OrganizationCode></cet:OrganizationCode> 
       <cet:LastName></cet:LastName> 
       <cet:FirstName></cet:FirstName> 
       <cet:AktCard></cet:AktCard> 
       <cet:JobAgreementType></cet:JobAgreementType> 
       <cet:Mferac></cet:Mferac> 
      </cet:GetEmployed> 
      </cet:GetEmployedElement> 
     </soapenv:Body> 
    </soapenv:Envelope> 
    """) 

from gluon.contrib.pysimplesoap.client import SoapClient, SoapFault 
client = SoapClient(wsdl="https://www.xxxx.yy/demo/aaa/aaa?wsdl", location="https://www.xxxx.yy", cacert=None, trace=True) 
# call SOAP method 
#print server.methods['getEmployed'] 
#print client 
print client.getEmployed() 

und mein Ergebnis ist

POST http://192.168.66.53:8380/demo/KadrisData/KadrisData 
SOAPAction: "http://cetrtapot.si/getEmployed" 
Content-length: 269 
Content-type: text/xml; charset="UTF-8" 

<?xml version="1.0" encoding="UTF-8"?><soap:Envelope 
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
<soap:Header/> 
<soap:Body> 

</soap:Body> 
</soap:Envelope> 

Und nach einer Weile bekomme ich ein Timeout mit

urllib2.URLError: <urlopen error [Errno 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond> 

Antwort

0

Mit einfacher Seife zuerst musste ich einstellen eine URL, wo die XML-Datei seit dem Aufruf einer internen URL

abgerufen werden kann
client.services['xxx']['ports']['xxx']['location'] = 'https://www.xxx.yyy/demo/gg/gg' 

aber da ich einige xml Parsing und andere Probleme hatte, entschied ich mich, Zeep-Bibliothek zu verwenden, aber ich musste auch einige Korrekturen vornehmen. Ich weiß nicht, ob es ein Fehler ist, aber der Anruf zum Abrufen von Daten wurde falsch gemacht, so brauchte ich ein paar Sachen zu korrigieren (siehe Kommentare in Code)

client = Client(url ,strict=False) 
#In case some parameters expected from envelope were missing I got an error, so I needed to set strict = False 
x = client.service.getEmployed 
x._proxy._binding_options['address'] = 'https://www.xxxx.yyyy/demo/gggg/gggta' 
#a new binding option neede to be set otherwise some internal 192.168.xx.yy was called and that is why I always got an timeout error 

hoffe, das hilft jemand