2013-02-12 2 views
0

Я пытаюсь использовать pysimplesoap для связи с SOAP-API веб-сайта Websitepanel. API-интерфейс WebsitePanel Введение говорит:Проблемы с правильной аутентификацией с помощью pysimplesoap

Для взаимодействия с API WebsitePanel вы должны использовать базовую аутентификацию. WebsitePanel признает «Authorization» заголовок с учетными данными пользователя, представленных в следующем формате: Имя пользователя: Пароль

Моя первая попытка была следующая:

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 ошибке ?

Заранее спасибо.

ответ

3

Я понял это: Для того, чтобы правильно аутентификации pysimplesoap вы должны вызвать

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

с encoded неоспоримым кодировке base64 строку username:password

+0

Я попытался это, но инициализатор SoapClient в не принимает ключевое слово параметр 'http_headers'. Правильно ли этот код? –

+0

Я использую версию 1.07a - и она отлично работает. Фактическая подпись инициализатора SoapClient: 'def __init __ (self, location = None, action = None, namespace = None, cert = None, trace = False, exceptions = True, proxy = None, ns = False, soap_ns = None, wsdl = None, cache = False, cacert = None, session = False, soap_server = None, timeout = _USE_GLOBAL_DEFAULT, http_headers = {} ) ' – Subito

Смежные вопросы