我正在试图弄清楚如何使用将使用代理的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
答案 0 :(得分:9)
来自simpleHTTP
的{{3}}:
simpleHTTP req
通过打开直接传输Request req
, 与HTTP的非持久连接 服务器... 如果你必须通过调解请求 一个HTTP代理,你将不得不 自己规范化请求。要么 切换到使用Network.Browser
代替。
我不确定作者的意思是“自己规范化请求”。我不知道simpleHTTP
中的Network.HTTP
是如何实现的 - 我认为您必须使用documentation中的{。}}。
那么为什么不使用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