Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 4, 2007 17:35:25

Tmr
От:
Зарегистрирован: 2007-03-12
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

ZSI(SOAP) и прокси сервер

Пытаюсь соединиться к SOAP серверу через проксю, да ещё и через HTTPS. Второе не страшно, а вот прокси так просто не преодолим. Никак не получается соединиться…
Можно подсунуть при соединении свой транспорт, наследник от HTTPSConnection. Но как реализовать в наследнике прозрачную поддержку прокси, в голову не приходит! Можно подсунуть в метод connect адрес своей прокси, а при создании request объекта (get, post) подсовывать полный адрес ресурса, но не уверен что это осуществимо, точнее что это будет нормально работать. Напишите, кто сталкивался с подобной проблемой!



Отредактировано (Апрель 5, 2007 08:08:45)

Офлайн

#2 Апрель 5, 2007 11:42:22

Tmr
От:
Зарегистрирован: 2007-03-12
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

ZSI(SOAP) и прокси сервер

В принципе есть альтернатива сделать классы-обертки над следующими классами, с переопределением перечисленных методов (duck-typing в действии :)):

HTTPConnection:

endheaders()
send("")
getresponse()
putheader("", "")
putrequest("","")
# The httplib doesn't understand the HTTP continuation header.
# Horrible internals hack to patch things up.
self.h._HTTPConnection__state = httplib._CS_REQ_SENT
self.h._HTTPConnection__response = None

HTTPResponse:

response.getheader("")
response.status,
response.reason,
response.msg,
response.read()

HTTPMessage:

msg.getallmatchingheaders()
В ZSI(client.py) используются только вышеприведенные методы.
Наверное так и сделаю. Как вы считаете, такой подход уметсен? Какие он в себе таит опасности, кроме той, что реализация в след. версиях client.py может поменяться, и придется переделывать свои классы. И есть ли все-таки более изящная альтернатива?
Если у кого-нибудь есть примеры реализации наследников от HTTPConnection реализующих новую функциональность - покажите, пож.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version