Используя Haskell SimpleHTTP с прокси? - PullRequest
6 голосов
/ 04 октября 2010

Я пытаюсь выяснить, как сделать основной запрос GET с помощью Network.HTTP.simpleHTTP, который будет использовать прокси.

Я попытался установить переменную среды http_proxy, и я думаю, что понимаю, каксделать прокси используя Network.HTTP.Proxy.Но в API на Hackage, похоже, нет ничего, как установить простой HTTTP-вызов или тип запроса для использования прокси.

Текущий код, который у меня есть:

import Network.HTTP
import Network.HTTP.Proxy
import Data.Maybe

main = do 
   let proxy = fromJust $ parseProxy "proxyserver.foo.com:80"
   x <- simpleHTTP (getRequest "http://www.google.com") >>= getResponseBody
   print x 

1 Ответ

9 голосов
/ 04 октября 2010

Из документации для simpleHTTP:

simpleHTTP req передает Request req, открывая direct , непостоянное соединение с HTTP сервер ... Если вы должны опосредовать запрос через HTTP-прокси, вам придется нормализуйте запрос самостоятельно. Или же перейти на использование Network.Browser вместо этого.

Я не совсем уверен, что авторы подразумевают здесь под "нормализацией запроса". Я не понимаю, как это было бы возможно с simpleHTTP в Network.HTTP - я думаю, вам нужно будет использовать тот в Network.HTTP.HandleStream.

Так почему бы просто не использовать Network.Browser вместо этого? Это очень удобно:

import Control.Applicative ((<$>))
import Data.Maybe (fromJust)
import Network.Browser
import Network.HTTP
import Network.HTTP.Proxy (parseProxy)

main = do
  rsp <- browse $ do
    setProxy . fromJust $ parseProxy "127.0.0.1:8118"
    request $ getRequest "http://www.google.com"
  print $ rspBody <$> rsp
...