Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Подскажите библиотеку для работы с HTTP, Нужна простая и удобная библиотека... 
V
    Опции темы
spyswamp
Дата 17.7.2012, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 349
Регистрация: 18.8.2006

Репутация: нет
Всего: 7



Привет. Сразу оговорюсь, что в python и работе с веб-ресурсами и новичок. Однако раз придумал себе задачу, то надо ее решать. Суть простая: пообщаться с http-сервисом. Я отправляю запрос - сервис мне возвращает ответ в виде XML. Проблема в том, что на сервере есть авторизация, которая проходится так же запросом к нему.

Вот что у меня получилось:
Код

import sys
import httplib

# auth

conn = httplib.HTTPConnection("192.168.3.177:8060")
conn.request("GET", "/rest-service/auth-v1/login?userName=slava&password=12345")
response = conn.getresponse()
print response.status, response.reason, response.read()

cookies = response.getheader("set-cookie")
print cookies

# work

conn.request("GET", "/rest-service/reviews-v1/MO-248/comments/general")
response = conn.getresponse()
print response.status, response.reason


Вывод такой:
Код

200 OK <?xml version="1.0" encoding="UTF-8" standalone="yes"?><loginResult><token>slava:1:8ad8e445edff0b3f728e05db87f66145</token></loginResult>
remember=;Path=/;Expires=Thu, 01-Jan-1970 00:00:00 GMT;HttpOnly, crucibleprefs1="D%3D1342534102239";Path=/;Expires=Wed, 17-Jul-2013 14:08:22 GMT, FESESSIONID=ia04m9x13zvaxqzhgv8yg8y7;Path=/;HttpOnly
403 Forbidden


Я так понимаю, что мне как-то надо запомнить этот token? Чтобы дальше через него работать. Или cookie? Потому что на второй запрос вылазит 403, т.е. авторизацию как ветром сдуло. Ну, или если я прям совсем туплю, то поясните криком прямо в лицо! А, может, и посоветуйте либу, которая делает такие вещи автоматически.

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


--------------------
- why you call it beta?
- cuz it's betta then nothin'
PM MAIL   Вверх
spyswamp
Дата 18.7.2012, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 349
Регистрация: 18.8.2006

Репутация: нет
Всего: 7



Прочитал, что httplib - это прошлый век, и заюзал urllib2.
Чуть-чуть поучил python и переписал немного тестовый скрипт:

Код

import sys
import urllib
import urllib2
import re
 
crucible_url = 'http://192.168.3.177:8060'
 
def crucible_auth(user, password):
     """ authorization on crucible """
     print "Logging in..."
     params = urllib.urlencode({'userName' : user, 'password' : password})
     req = urllib2.Request(crucible_url + '/rest-service/auth-v1/login', params)
     f = urllib2.urlopen(req)
     cookie = unicode(f.headers['Set-Cookie'], 'utf-8')
     matches = re.findall('(?si)FESESSIONID=(.*?);', cookie)
     session_id = matches[0]
     print "Logged on, session id = ", session_id
     return session_id
 
def send_request(session_id, service_url):
     """ sending request to crucible rest api """
     req = urllib2.Request(crucible_url + service_url)
     req.add_header("Cookie", "FESESSIONID=" + session_id + ";")
     f = urllib2.urlopen(req)
     return f.read()
 
def main():
     session_id = crucible_auth('slava', '12345')
     content = send_request(session_id, '/rest-service/reviews-v1/MO-248/comments/general')
     print content
 
if __name__ == "__main__":
    main()



--------------------
- why you call it beta?
- cuz it's betta then nothin'
PM MAIL   Вверх
Karadul
Дата 23.7.2012, 01:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.5.2006

Репутация: нет
Всего: 1



requests
grab

Код

from grab import Grab

grab = Grab()
resp = grab.go("http://httpbin.org/post", post={u'превед':u'медвед'}, proxy="loopback:9050", proxy_type="socks5")
print resp.body
print resp.cookies

PM MAIL   Вверх
spyswamp
Дата 25.7.2012, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 349
Регистрация: 18.8.2006

Репутация: нет
Всего: 7



Karadul, из стандартной поставки, не?


--------------------
- why you call it beta?
- cuz it's betta then nothin'
PM MAIL   Вверх
Karadul
Дата 25.7.2012, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.5.2006

Репутация: нет
Всего: 1



spyswamp, не, и чо? Инсталл скрипт в руки.
PM MAIL   Вверх
bilbobagginz
Дата 1.8.2012, 20:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: нет
Всего: 317



urllib2, httplib2 тоже катят хорошо. поддерживает разные виды авторизации, https, и т.д.




--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
Karadul
Дата 2.8.2012, 02:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.5.2006

Репутация: нет
Всего: 1



Ага, только стиль жавоидный, суем один обьект другому, другой третьему, на второй раз без примера и бутылки опять не разберешься. А в грабе любой запрос делается одним вызовом.
PM MAIL   Вверх
gomer999999999
Дата 3.2.2013, 23:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 3.2.2013

Репутация: -1
Всего: -1



Добрый день.
Предлагаем к рассмотрению и тестированию наш проект - Маркетер Плагин.
Продвигаем его успешно во всем мире. Но только 27 января 2013 предоставили в Рунете к тестированию русифицированный плагин с русифицированным интерфейсом. Вся подробная информация наhttp://www.marketerplugin.ru/ 
Предлагаем протестировать наш плагин на только что русифицированном интерфейсеhttp://www.marketerplugin.ru/test_plagina.
В двух словах: плагин предназначен для создания сайтов-визиток и страниц продаж.
Ждем ваших комментариев, отзывов и критики.
Так же будем рады видеть вас на наших страницах в соц сетях
http://www.facebook.com/pages/Marketer-plugin/5288148..
http://vk.com/club46912629
Успехов и новых впечатлений.
С уважением, Богдан
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Веб-разработка и фреймворки | Следующая тема »


 




[ Время генерации скрипта: 0.0473 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.