2016-05-06 4 views
0

Я пытаюсь использовать SOAPpy для подключения к веб-сервису. Каждый из методов из службы использует имя пользователя Passwort для аутентификации. У Passwort есть один специальный немецкий символ («ä»).Как настроить UTF-8 в Python SOAPpy

Когда я excecuting следующий сценарий:

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 

from SOAPpy import WSDL 
server = WSDL.Proxy('http://www.example.com/xxx.asmx?WSDL') 
server.HelloWorld("xxx","xxxäxxx") 

Я получаю этот выход в терминале.

Traceback (most recent call last): 
    File "./test.py", line 6, in <module> 
    server.HelloWorld("xxx","xxxäxxx") 
    File "/usr/lib/pymodules/python2.7/SOAPpy/Client.py", line 470, in __call__ 
    return self.__r_call(*args, **kw) 
    File "/usr/lib/pymodules/python2.7/SOAPpy/Client.py", line 492, in __r_call 
    self.__hd, self.__ma) 
    File "/usr/lib/pymodules/python2.7/SOAPpy/Client.py", line 354, in __call 
    config = self.config, noroot = self.noroot) 
    File "/usr/lib/pymodules/python2.7/SOAPpy/SOAPBuilder.py", line 636, in buildSOAP 
    return t.build() 
    File "/usr/lib/pymodules/python2.7/SOAPpy/SOAPBuilder.py", line 147, in build 
    self.dump(i, typed = typed, ns_map = ns_map) 
    File "/usr/lib/pymodules/python2.7/SOAPpy/SOAPBuilder.py", line 303, in dump 
    meth(obj, tag, typed, ns_map) 
    File "/usr/lib/pymodules/python2.7/SOAPpy/SOAPBuilder.py", line 376, in dump_string 
    typed, ns_map, self.genroot(ns_map), id)) 
    File "/usr/lib/pymodules/python2.7/SOAPpy/SOAPBuilder.py", line 339, in dumper 
    "id": id, "attrs": a} 
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 9: ordinal not in range(128) 

Как настроить/инициализировать SOAPpy для работы с UTF-8?

+0

После этого я Рунический во второй задаче. Теперь я использую пена для подключения к Microsoft Webservice: от suds.client import Client client = Client ('http://www.example.com/xxx.asmx?wsdl') print client.service.HelloWorld ("xxx ", u" xxxäxxx ") – user2111880

ответ

1

Вы должны использовать юникод строки:

server.HelloWorld("xxx", u"xxxäxxx")