Http запрос через прокси

Раздел посвящен программированию с использованием Power Basic.
Kroos
Обычный пользователь
Обычный пользователь
 
Сообщения: 55
Зарегистрирован: 21.02.2012 (Вт) 16:57

Http запрос через прокси

Сообщение Kroos » 16.03.2012 (Пт) 11:09

Суть вопроса: как половчее отправить post запрос на сервер через прокси? Рассматривались 2 варианта - WinHTTP API и как COM обьект. Во втором случае прокси задается методом SetProxy (c этим вариантом нет вопросов). Но хотелось бы помучать и разобрать первый вариант, и вот как там прокси задать (только для текущей сессии, не трогая реестр (как WinHttpSetDefaultProxyConfiguration) и системные настройки) я не дошариваю. По смыслу, этим должна заниматься WinHttpGetProxyForUrl... но так и не разобрался с параметрами :(
В общем, вопрос - как задать прокси для текущей сессии WinHTTP (типа как .SetProxy)?
И в принципе, каким способом в данном случае лучше пользоваться, возможно есть еще варианты?

DarkMachine
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 51
Зарегистрирован: 24.02.2012 (Пт) 15:58

Re: Http запрос через прокси

Сообщение DarkMachine » 16.03.2012 (Пт) 13:53

содрал из старого проекта. На форуме ПБ есть все необходимое...
Код: Выделить всё
hWeb = FREEFILE
TCP OPEN PORT ProxyPort AT ProxyAddr AS hWeb

TCP PRINT hWeb, "GET http://site.com/ HTTP/1.0"
TCP PRINT hWeb, "User-Agent: Mozilla/4.0"
TCP PRINT hWeb, "Accept: */*"
TCP PRINT hWeb, "Pragma: no-cache"
TCP PRINT hWeb, "Referer: http://site.com/"
TCP PRINT hWeb, "Host:  http://site.com/"
Base64In  = Username & ":" & Password
Base64Out = Get_Base64_Encode ( Base64In )
TCP PRINT hWeb, "Proxy-Authorization: Basic"
TCP PRINT hWeb, ""

' Get Header
DO
    DIALOG DOEVENTS
    TCP LINE #hWeb, HEADER
    IF LEFT$(HEADER, 4) = "HTTP" THEN
        Response = PARSE$(HEADER, " ", 2)
        Authinfo = PARSE$(HEADER, " ", 3) & " " & PARSE$(HEADER, " ", 4) & " " & PARSE$(HEADER, " ", 5)
    END IF
    IF LCASE$(LEFT$(HEADER, 17)) = "www-authenticate:" THEN
        i = INSTR(HEADER, "realm=")
        Authinfo = Authinfo & "for " & MID$(HEADER, i + 6)
    END IF
    IF LCASE$(LEFT$(HEADER, 18)) = "transfer-encoding:" THEN
        Chunked = TRIM$(LCASE$(MID$(Header$, 20)))
    END IF
    IF LCASE$(LEFT$(HEADER, 15)) = "content-length:" THEN
        ContentLen = VAL(TRIM$(MID$(Header$, 17)))
    END IF
LOOP UNTIL Header$ = "" OR Header$ = " "

' Get Body
IF Response = "200" THEN
...
END IF

Kroos
Обычный пользователь
Обычный пользователь
 
Сообщения: 55
Зарегистрирован: 21.02.2012 (Вт) 16:57

Re: Http запрос через прокси

Сообщение Kroos » 16.03.2012 (Пт) 14:59

так неинтересно... в WinHTTP опции всякие есть, он редиректы сам обрабатывает...

Kroos
Обычный пользователь
Обычный пользователь
 
Сообщения: 55
Зарегистрирован: 21.02.2012 (Вт) 16:57

Re: Http запрос через прокси

Сообщение Kroos » 31.07.2013 (Ср) 9:36

простейший пример кода см. _http://www.jose.it-berater.org/smfforum/index.php?topic=4368.msg15164#msg15164

суть проблемы - метод Open валится с ошибкой "url адрес не использует поддерживаемый протокол" в ответ на любой верно прописанный URL. В чем тут дело?


Вернуться в Power Basic

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10

    TopList