Как установить пользовательский агент HTTP-запроса с помощью Gio?

Я пытаюсь выполнять асинхронные HTTP-запросы с помощью Gio и хотел бы настроить собственный пользовательский агент для своих запросов, но не могу найти ничего связанного.

Я использую PyGObject для доступа к Gio, но я, конечно, мог бы обойтись и примером C.


person Jonathan Ballet    schedule 15.03.2013    source источник


Ответы (1)


В качестве примера возьмем следующее: https://live.gnome.org/Vala/GIONetworkingSample

Вам нужно добавить пользовательские агенты в заголовки вашего запроса. В приведенных выше примерах замените :

var message = "GET / HTTP/1.1\r\nHost: www.google.com\r\n\r\n";

С участием :

var message = "GET / HTTP/1.1\r\nHost: www.google.com\r\nUser-Agent: Mozilla/5.0 (X11; Linux x86_64)\r\n\r\n";

Идея та же, что и в питоне. См. HTTP 1.0 RFC 1945 (глава 5, страницы 23–25) для получения подробной информации о формат HTTP-запроса. Поле заголовка User-Agent описано в разделе 10.15.

person wldsvc    schedule 15.03.2013
comment
Хм, спасибо, я собираюсь поиграть с этим, но это означает, что мне придется заново реализовать всю функцию HTTP-запроса вручную... - person Jonathan Ballet; 17.03.2013
comment
Реализация HTTP-запроса вручную — единственный известный мне метод работы с GIO. Если вы используете любую другую функцию Gio или сторонней библиотеки, которая упрощает эту задачу, вы должны были опубликовать ссылки на нее. В любом случае, идея та же: вам просто нужно добавить заголовок User-Agent в HTTP-запрос, и любая библиотека, специально работающая с HTTP, позволит вам сделать это тем или иным способом. Если нет, то выкинь ;) - person wldsvc; 17.03.2013