我也遇到了SOAP问题。我正在尝试使用带有SUDS的python实现一个接口。
我正在尝试创建一个在python中验证和搜索LexisNexis的应用程序。因此,如果有人知道这是否已经实施,那也将是伟大的。我已经搜索了很多协议,并找到了这个网站:https://hkn.eecs.berkeley.edu/~dhsu/hacks.shtml,这很好,但没有SOAP代码。
到目前为止我做了什么:
我知道信封应该是这样的:
<?xml version="1.0" encoding="utf-8"?>
<soap:Body xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<Authenticate xmlns="http://authenticate.authentication.services.v1.wsapi.lexisnexis.com">
<authId>id</authId>
<password>password</password>
</Authenticate>
</soap:Body>
我可以建立它(我认为)
from suds.sax.element import Element
authentication = Element('Authenticate')
authentication.set('xmlns','http://authenticate.authentication.services.v1.wsapi.lexisnexis.com')
authId = Element('authId').setText('authId')
password = Element('password').setText('password')
authentication.append(authId)
authentication.append(password)
print authentication
返回:
<Authenticate xmlns="http://authenticate.authentication.services.v1.wsapi.lexisnexis.com">
<authId>authId</authId>
<password>password</password>
</Authenticate>
但是,我无法让客户端工作。我收到了这个信息:
架构
- Authentication.xsd
目标命名空间
- http://authenticate.authentication.services.v1.wsapi.lexisnexis.com
命名空间表
我可能做错了,但我尝试过:
client = Client('http://authenticate.authentication.services.v1.wsapi.lexisnexis.com')
和
imp = Import('http://www.w3.org/2001/XMLSchema',
location='http://www.w3.org/2001/XMLSchema.xsd')
imp.filter.add('http://security.common.services.v1.wsapi.lexisnexis.com')
wsdl_url = 'http://authenticate.authentication.services.v1.wsapi.lexisnexis.com'
client = Client(wsdl_url, doctor=ImportDoctor(imp))
然而两者都导致了
<urlopen error [Errno 8] nodename nor servname provided, or not known>
很抱歉这是SUDS的新手,这是我的第一次和LexisNexis api非常粗糙。
非常感谢
答案 0 :(得分:0)
您的错误与suds
几乎没有关系,以及与基础urllib
连接请求有关的一切:
<urlopen error [Errno 8] nodename nor servname provided, or not known>
当主机名不正确或者根本没有响应时,此错误很常见。这是一个简单的例子:
import urllib
urllib.urlopen(u'http://authenticate.authentication.services.v1.wsapi.lexisnexis.com')
这也失败了!检查您的网址,然后重试。
答案 1 :(得分:0)
LexisNexis为API开发人员提供了一个WSDL文件,以及他们的用户名和密码。您必须确保使用此WSDL。要使用SUDS在本地访问WSDL文件,请输入url as file://path/to/file.wsdl