इस सवाल से संबंधित है का उपयोग करते हुए: Python SOAP server/clientअजगर साबुन soaplib (सर्वर) और झाग (ग्राहक)
अजगर के साथ साबुन के मामले में, वहाँ साबुन सर्वर और झाग के रूप में soaplib (http://wiki.github.com/jkp/soaplib) (उपयोग करने के लिए सिफारिश कर रहे हैं https://fedorahosted.org/suds/) साबुन ग्राहक के रूप में। मेरा लक्ष्य पाइथन में साबुन सेवाओं को बनाना है जिसे कई ग्राहकों (जावा, आदि) द्वारा उपभोग किया जा सकता है। मैंने सोपलिब (http://trac.optio.webfactional.com/wiki/HelloWorld) से हैलोवर्ल्ड उदाहरण की कोशिश की। क्लाइंट सोपलिब का उपयोग करते समय यह अच्छी तरह से काम करता है।
फिर, मैंने ग्राहकों को हैलोवर्ल्ड सेवाओं का उपभोग करने वाले क्लाइंट के रूप में उपयोग करने की कोशिश की और यह असफल रहा। - यह क्यों हो रहा है? क्या सोपलिब सर्वर को विभिन्न ग्राहकों द्वारा उपभोग करने में समस्याएं हैं?
यहाँ सर्वर के लिए कोड:
from soaplib.client import make_service_client
from SoapServerTest_1 import HelloWorldService
client = make_service_client('http://localhost:7789/',HelloWorldService())
print client.say_hello("Dave",5)
परिणाम::
from suds.client import Client
url = 'http://localhost:7789/HelloWordService?wsdl'
client1 = Client(url)
client1.service.say_hello("Dave",5)
:
>>> ['Hello, Dave', 'Hello, Dave', 'Hello, Dave', 'Hello, Dave', 'Hello, Dave']
यह झाग ग्राहक है
from soaplib.wsgi_soap import SimpleWSGISoapApp
from soaplib.service import soapmethod
from soaplib.serializers.primitive import String, Integer, Arraycode
class HelloWorldService(SimpleWSGISoapApp):
@soapmethod(String,Integer,_returns=Array(String))
def say_hello(self,name,times):
results = []
for i in range(0,times):
results.append('Hello, %s'%name)
return results
if __name__=='__main__':
from cherrypy.wsgiserver import CherryPyWSGIServer
#from cherrypy._cpwsgiserver import CherryPyWSGIServer
# this example uses CherryPy2.2, use cherrypy.wsgiserver.CherryPyWSGIServer for CherryPy 3.0
server = CherryPyWSGIServer(('localhost',7789),HelloWorldService())
server.start()
यह soaplib ग्राहक है
परिणाम: अपने वर्ग में पुरातन आयात करने के लिए
>>> Unhandled exception while debugging...
Traceback (most recent call last):
File "C:\Python25\Lib\site-packages\RTEP\Sequencing\SoapClientTest_1.py", line 10, in <module>
client1.service.say_hello("Dave",5)
File "c:\python25\lib\site-packages\suds\client.py", line 537, in __call__
return client.invoke(args, kwargs)
File "c:\python25\lib\site-packages\suds\client.py", line 597, in invoke
result = self.send(msg)
File "c:\python25\lib\site-packages\suds\client.py", line 626, in send
result = self.succeeded(binding, reply.message)
File "c:\python25\lib\site-packages\suds\client.py", line 658, in succeeded
r, p = binding.get_reply(self.method, reply)
File "c:\python25\lib\site-packages\suds\bindings\binding.py", line 158, in get_reply
result = unmarshaller.process(nodes[0], resolved)
File "c:\python25\lib\site-packages\suds\umx\typed.py", line 66, in process
return Core.process(self, content)
File "c:\python25\lib\site-packages\suds\umx\core.py", line 48, in process
return self.append(content)
File "c:\python25\lib\site-packages\suds\umx\core.py", line 63, in append
self.append_children(content)
File "c:\python25\lib\site-packages\suds\umx\core.py", line 140, in append_children
cval = self.append(cont)
File "c:\python25\lib\site-packages\suds\umx\core.py", line 61, in append
self.start(content)
File "c:\python25\lib\site-packages\suds\umx\typed.py", line 77, in start
found = self.resolver.find(content.node)
File "c:\python25\lib\site-packages\suds\resolver.py", line 341, in find
frame = Frame(result, resolved=known, ancestry=ancestry)
File "c:\python25\lib\site-packages\suds\resolver.py", line 473, in __init__
resolved = type.resolve()
File "c:\python25\lib\site-packages\suds\xsd\sxbasic.py", line 63, in resolve
raise TypeNotFound(qref)
TypeNotFound: Type not found: '(string, HelloWorldService.HelloWorldService,)'
मैं बस वर्तमान स्रोतों के साथ आज कोशिश की और मूल पोस्टर के रूप में बिल्कुल वही समस्या मिली। आयात विवरण जोड़ने से मदद नहीं मिली (वास्तव में, आप मूल कोड देख सकते हैं और आयातित प्राइमेटिव देख सकते हैं)। – user343574