使用Haskell的SimpleHTTP与代理?

dev*_*and 6 proxy networking haskell

我正在试图弄清楚如何使用将使用代理的Network.HTTP.simpleHTTP进行基本的GET请求.

我已经尝试设置http_proxy环境变量,我想我了解如何使用Network.HTTP.Proxy创建代理.但是Hackage中的API似乎没有关于如何设置simpleHTTP调用或Request类型来使用代理的任何内容.

我目前的代码是:

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 
Run Code Online (Sandbox Code Playgroud)

Tra*_*own 9

文档simpleHTTP:

simpleHTTP req传送Request req通过打开直接到HTTP服务器,非持久连接...如果你有调解通过HTTP代理请求,你将不得不自己正常化的要求.或者切换到使用Network.Browser .

我不确定作者的意思是"自己规范化请求".我不知道如何使用simpleHTTPin Network.HTTP-I认为你必须使用它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
Run Code Online (Sandbox Code Playgroud)