ठीक है, मैं इसके साथ एक सा आसपास खेला है।
पहले, एक छोटे से परीक्षण सर्वर (courtesy of soaplib):
import soaplib
from soaplib.core.service import rpc, DefinitionBase, soap
from soaplib.core.model.primitive import String, Integer
from soaplib.core.server import wsgi
from soaplib.core.model.clazz import Array
import sys, pprint
class HelloWorldService(DefinitionBase):
@soap(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
class WsgiApp(wsgi.Application):
def on_wsgi_return(self, env, headers, return_str):
headers['Set-Cookie'] = 'spam=eggs;domain=127.0.0.1;path=/'
print >>sys.stderr, headers
if __name__=='__main__':
try:
from wsgiref.simple_server import make_server
soap_application = soaplib.core.Application([HelloWorldService], 'tns')
wsgi_application = WsgiApp(soap_application)
server = make_server('localhost', 7789, wsgi_application)
server.serve_forever()
except ImportError:
print "Error: example server code requires Python >= 2.5"
कुछ छोटे संशोधन के साथ
एक कुकी शीर्ष लेख सेट करने के लिए।
और एक झाग-testclient:
from suds import client, transport
c = client.Client("http://127.0.0.1:7789/?wsdl")
print c.service.say_hello("spam", 1)
print c.options.transport.cookiejar
चल रहा यह पैदा करता है:
(stringArray){
string[] =
"Hello, spam",
}
<cookielib.CookieJar[<Cookie spam=eggs for .127.0.0.1/>]>
तो यह काम करने के लिए तेजी। लेकिन अगर आप http://localhost:7789/?wsdl
करने के लिए अनुरोध यूआरएल बदल आप प्राप्त करेंगे:
(stringArray){
string[] =
"Hello, spam",
}
<cookielib.CookieJar[]>
cookielib
ग्राहक पर के लिए कुछ लॉगिंग चालू करना ...
import logging
import cookielib
logging.basicConfig()
logging.getLogger('cookielib').setLevel(logging.DEBUG)
cookielib.debug = True
... और यह पता चलता है का पता चलता है क्यों:
DEBUG:cookielib:add_cookie_header
DEBUG:cookielib:extract_cookies: Date: Thu, 17 May 2012 15:56:01 GMT
Server: WSGIServer/0.1 Python/2.7.3
Set-Cookie: spam=eggs;domain=127.0.0.1;path=/
Content-Length: 822
Content-Type: text/xml
DEBUG:cookielib: - checking cookie spam=eggs
DEBUG:cookielib: effective request-host localhost.local (even with added initial
dot) does not end with .127.0.0.1
(stringArray){
string[] =
"Hello, spam",
}
<cookielib.CookieJar[]>
सरल व्याख्या है: कुकी डोमेन अनुरोध के सर्वर डोमेन से मेल नहीं खाता है, और यह cookielib
लगता है के रूप में जब verifyi किसी भी देखने नहीं करता है डोमेन और एनजी।
तो समाधान में से एक होगा:
- यकीन है कि क्लाइंट और सर्वर उदाहरण मैं
localhost.local
करने के लिए दोनों सेट करने के लिए में (या तो domainname या आईपी) डोमेन का उपयोग
यह काम करने के लिए बनाने के (मई hosts
फ़ाइल पर निर्भर करता है ...)
- भेजा कुकी से डोमेन निकालें, तब
cookieib
अनुरोध डोमेन का उपयोग करता स्वचालित रूप से
- एक cookiejar DNS खोज
का उपयोग करता है ओह लागू है, और अंत में सबसे महत्वपूर्ण: कारण है कि उसने ऐसा नहीं किया ओपीएस प्रश्न में काम:
बंदरगाह डोमेन का हिस्सा नहीं है, इसलिए Domain=10.242.69.4:8088
वाली कुकी को हमेशा अस्वीकार कर दिया जाएगा।