【问题标题】:Using Haskell's SimpleHTTP with a Proxy?将 Haskell 的 SimpleHTTP 与代理一起使用?
【发布时间】:2011-04-20 22:16:05
【问题描述】:

我正在尝试弄清楚如何使用 Network.HTTP.simpleHTTP 发出基本的 GET 请求,该请求将使用代理。

我尝试设置 http_proxy 环境变量,我想我了解如何使用 Network.HTTP.Proxy 制作代理。但是在 Hackage 上的 API 中似乎没有关于如何设置简单的 HTTP 调用或请求类型以使用代理的内容。

我目前的代码是:

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 

【问题讨论】:

    标签: networking haskell proxy


    【解决方案1】:

    documentationsimpleHTTP

    simpleHTTP req 通过打开一个direct 来传输Request req, 到 HTTP 的非持久连接 服务器... 如果您必须通过调解请求 HTTP 代理,您必须 自己规范化请求。要么 切换到使用Network.Browser 而是。

    我不太确定作者在这里所说的“自行规范化请求”是什么意思。我不明白Network.HTTP 中的simpleHTTP 怎么可能——我认为你必须使用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
    

    【讨论】:

    • 谢谢,第一次尝试。是的,我在发布后不久就在 API 中看到了“规范化”评论,但也不知道该怎么做。
    猜你喜欢
    • 1970-01-01
    • 2013-01-10
    • 2018-11-02
    • 2014-03-06
    • 2016-12-09
    • 2013-06-11
    • 2012-06-08
    • 2023-03-22
    • 1970-01-01
    相关资源
    最近更新 更多