Ru-MaNGOS

Вернуться   Ru-MaNGOS > Дневники > CruncH

Важная информация

Оценить эту запись

SOAP & Python

Запись от CruncH размещена 14.05.2010 в 23:14
Обновил(-а) CruncH 16.05.2010 в 18:51
Метки python, soap

3 дня поиска решения, о реализации SOAP клиента на питоне, увенчались хоть каким то успехом.
Сначала попались 3 проекта SOAPpy, ZSI, suds. Потом еще нашел soaplib. Первые два не развивались с ~2007 и ~2005 года, последние еще развиваются потихоньку.

И так, первые два почти сразу отмел, ибо они написаны были во времена 2.5 питона и оффициально не поддерживаются, да и в http://pypi.python.org/pypi их небыло.
Так как soaplib был наден позже, пришлось мучать suds... Но из этих попыток заставить его, ничего не вышло. Я так понял он больше заточен под "более продвинутый SOAP" а именно WSDL, и с простым SOAP просто отказывался работать. И почти всегда получал "TransportError: HTTP Error 405: Method Not Allowed"
Авторизация была почти в корне не правильной, он сначала коннектился к серверу, потом только хотел был авторизироваться, но и до этого не доходило.

soaplib... что то через чур простое, бегло осматривая код, я даже не увидел там задумок о Basic авторизации, которую требовал SOAP. Но это легкая либа для реализации клиента\сервера SOAP.

Самое интересное то, что нормальной документации не видел я по ним... Либо отрывистые примеры, либо ничего полезного...

Пытаться реализовать свой клиент не хотелось...
Попытался оживить SOAPpy v0.12...
Код:
sudo python setup.py install
и ошибка
Код:
Traceback (most recent call last):                                   
  File "setup.py", line 8, in <module>                               
    from SOAPpy.version import __version__                           
  File "/home/crunch/src/SOAPpy-0.12.0/SOAPpy/__init__.py", line 5, in <module>
    from Client      import *                                                  
  File "/home/crunch/src/SOAPpy-0.12.0/SOAPpy/Client.py", line 46              
    from __future__ import nested_scopes
Но это нас не остановит, попробовал удалить(то есть строчку from __future__ import nested_scopes added: их всего 3 в 3 файлах)виновника и воуля, компиляция в байт код прошла успешно и либа установилась.
Код:
from SOAPpy import SOAPProxy
url = "http://crunch:12345@127.0.0.1:7878/"
namespace = 'urn:MaNGOS'
client = SOAPProxy (url,namespace)
print client.executeCommand(command='s info')
Результат:
Код:
MaNGOS/0.16.0 (2010-05-13 14:33:35 Revision 9885 - eb29803754a56e28eb621aaaee2a679c19795d0c) for Linux_x32 (little-endian)
Используемая библиотека скриптов: Default MaNGOS scripting library                                                        
Используемая База Данных: YTDB_0.13.3_R544_MaNGOS_R9773_SD2_R1677_ACID_R304_RuDB_R37.6                                    
Использование существом EventAI:                                                                                          
Игроков онлайн: 0 (максимум: 0) Игроков в очереди: 0 (максимум: 0)                                                        
Продолжительность работы сервера: 1 Hour(s) 52 Minute(s) 59 Second(s).
Конечно не сразу все так легко получилось, пришлось полазить по коду библиотеки и искать как сделана авторизация, а она происходит не через дополнительные параметры. Все просто тут url составляется вида http://логин:пароль@адрес:порт.


Вроде все что хотел сказал...
C SOAP сильно еще не разбирался, но уже будет чем заняться на днях.

added: Поправил очепятку в примере...
Размещено в Без категории
Просмотров 15557 Комментарии 2
Всего комментариев 2

Комментарии

  1. Старый комментарий
    Аватар для Hantet
    Спасибо большое за полезную статью.
    Запись от Hantet размещена 16.05.2010 в 15:41 Hantet вне форума
  2. Старый комментарий
    та пустяки тут полезности мало, только как заставить работать устаревшую либу, и небольшой кусочек кода
    Запись от CruncH размещена 16.05.2010 в 18:30 CruncH вне форума
 

Текущее время: 16:49. Часовой пояс GMT +3.


ru-mangos.ru - Русское сообщество MaNGOS
Главная цель проекта MaNGOS - обучающая, поэтому разрешается использовать исходный код и собранную программу только для образовательных целей.
Вы не можете использовать MaNGOS в коммерческих целях, а также не разрешается устанавливать публичные серверы на базе MaNGOS.
Любое копирование материалов, информации в любом виде без указания источника - форума Ru-MaNGOS будет считаться нарушением авторских прав и нарушением Уголовного Кодекса РФ, ст. 146 ст. 147.
Перевод vBulletin: zCarot