Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Web
  • » XMLRPC не могу передать русский символ [RSS Feed]

#1 Март 9, 2011 13:29:34

MorFF
От:
Зарегистрирован: 2011-03-09
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

XMLRPC не могу передать русский символ

Написал XMLRPC сервер

def onsevent(t):
print t
return ''

def onchangestateelements(s = {}):
print s
return ''

def server():
server = SimpleXMLRPCServer(("localhost", 8000),requestHandler=RequestHandler)
server.register_introspection_functions()
server.register_function(onsevent, 'ONRSEVENT')
server.register_function(onchangestateelements, 'ONCHANGESTATEELEMENTS')
# print help (server.encoding)
print 'Server start'
server.serve_forever()


class MyThread(threading.Thread):
def run(self):
server()
и клиент
import xmlrpclib

s = xmlrpclib.ServerProxy('http://localhost:8000/xml-rpc')

# Print list of available methods
print s.system.listMethods()

print s.ONRSEVENT('ш')
при передаче русского символа вываливается ошибка
Fault: <Fault 1: "<class 'xml.parsers.expat.ExpatError'>:not well-formed (invalid token): line 6, column 15">
Видимо дело в кодировке, но исправить дело надо именно на сервере так как он будет работать с другим клиентом который править никак нельзя.



Офлайн

#2 Март 9, 2011 14:38:37

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

XMLRPC не могу передать русский символ

Офлайн

#3 Март 10, 2011 07:31:24

MorFF
От:
Зарегистрирован: 2011-03-09
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

XMLRPC не могу передать русский символ

Перевел нет эффекта дело в том что клиент посылает запрос в кодировке “Windows-1251” и если появляется русский символ то вылазит ошибка. Переводил кстати добавляя строку # -*- coding: utf-8 -*- первой в файле, пробовал также # -*- coding: Windows-1251 -*- тоже не помогло.
Пример запроса клиента:

<?xml version="1.0" encoding="Windows-1251" ?>

<methodCall>

<methodName>ONRSEVENT</methodName>

<params>
<param>
<value>
<struct>
<member>
<name>GUID</name>
<value><string>{18DE1E76-7F1B-4683-959B-94BEF5DE4439}</string></value>
</member>
<member>
<name>DATAEVENTS</name>
<value>
<struct>
<member>
<name>DATETIME</name>
<value><double>40611,4285416782</double></value>
</member>
<member>
<name>ADDRESS</name>
<value>
<struct>
<member>
<name>ADDRELEMENT</name>
<value><int>2</int></value>
</member>
<member>
<name>ADDRDEVICE</name>
<value><int>1</int></value>
</member>
<member>
<name>ADDRPULT</name>
<value><int>100</int></value>
</member>
<member>
<name>ADDRPORT</name>
<value><int>1</int></value>
</member>
</struct>
</value>
</member>
<member>
<name>TYPE</name>
<value><int>3</int></value>
</member>
<member>
<name>NAMETYPE</name>
<value><string>ШЛЕЙФ</string></value>
</member>
<member>
<name>EVENT</name>
<value><int>24</int></value>
</member>
<member>
<name>NAMEEVENT</name>
<value><string>Взятие зоны под охрану</string></value>
</member>
<member>
<name>TYPEEVENT</name>
<value><int>0</int></value>
</member>
<member>
<name>NAMETYPEEVENT</name>
<value><string>NEWEVENT</string></value>
</member>
</struct>
</value>
</member>
</struct>
</value>
</param>
</params>

</methodCall>
Еще раз повторюсь клиент нет возможности переписать



Отредактировано (Март 10, 2011 07:32:50)

Офлайн

#4 Март 10, 2011 08:45:37

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

XMLRPC не могу передать русский символ

Насколько помню, Python 2.7 умеет обрабатывать content encoding. Про другие версии с ходу ничего не скажу.



Офлайн

#5 Март 10, 2011 12:15:44

zheromo
От:
Зарегистрирован: 2010-10-02
Сообщения: 356
Репутация: +  2  -
Профиль   Отправить e-mail  

XMLRPC не могу передать русский символ

Перекодируйте сами, либо на основе значения encoding, либо если передается правильный Content-Type: text/xml;charset=windows-1251, то на основе charset.



Офлайн

  • Начало
  • » Web
  • » XMLRPC не могу передать русский символ[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version