使用pysimplesoap正确验证的问题

时间:2013-02-12 15:07:31

标签: python soap pysimplesoap

我正在尝试使用pysimplesoap与Websitepanel SOAP-API进行通信。 WebsitePanel API简介说:

  

要与WebsitePanel API进行交互,您应该使用基本身份验证。 WebsitePanel使用以下格式提供的用户凭据识别“授权”标头:用户名:密码

我的第一次尝试如下:

client = SoapClient(wsdl=endpoint_url, trace=True)
client['Authorization'] = "%s:%s" % (username, password)

返回401“未经授权”。 第二次尝试是:

client = SoapClient(wsdl=endpoint_url, trace=True)          
client['wsse:Security'] = {
    'wsse:UsernameToken': {
        'wsse:Username': username,
        'wsse:Password': password,
    }
}    

按预期工作但返回以下内容:

status: 500
content-length: 924
x-aspnet-version: 4.0.30319
x-powered-by: ASP.NET
server: Microsoft-IIS/7.5
cache-control: private
date: Tue, 12 Feb 2013 14:23:56 GMT
content-type: text/xml; charset=utf-8

pysimplesoap.client.SoapFault: q0:Security: SOAP response should be signed.

为什么client['Authorization']不起作用以及Response should be signed错误消息的含义是什么?

提前致谢。

1 个答案:

答案 0 :(得分:3)

我明白了:要使用pysimplesoap正确验证,你必须调用

client = SoapClient(wsdl=u, trace=True, 
                    http_headers={'Authorization': 'Basic %s' % encoded})

encoded使用base64编码的字符串username:password