LexisNexis SUDS SOAP请求

时间:2013-11-22 16:38:07

标签: python xml authentication soap suds

我也遇到了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非常粗糙。

非常感谢

2 个答案:

答案 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