【问题标题】:How can I use httpotion behind the proxy?如何在代理后面使用 httpotion?
【发布时间】:2015-05-16 05:43:57
【问题描述】:

(编辑:我使用HTTPoison's get! 功能清除了这个问题。

HTTPoison.start
HTTPoison.get!("httpbin.org/get", [], [{:proxy, {"proxy.mydomain.com", 8080}}])

我是使用长生不老药的新手。作为第一步,我尝试了httpotion 上的示例应用程序。

iex> 响应 = HTTPotion.get "httpbin.org/get"

但是,它无法访问代理后面的站点。

iex(1)> res = HTTPotion.get "httpbin.org/get"
** (HTTPotion.HTTPError) nxdomain
    (httpotion) lib/httpotion.ex:195: HTTPotion.handle_response/1

没有代理,就这样成功了;

iex(1)> res = HTTPotion.get "httpbin.org/get"
%HTTPotion.Response{body: "{\n  \"args\": {}, \n  \"headers\": {\n        \"Content-Length\": \"0\", \n    \"Host\": \"httpbin.org\"\n  }, \n  \"origin\": \"191.238.84.51\", \n  \"url\": \"http://httpbin.org/get\"\n}\n",
 headers: ["Access-Control-Allow-Credentials": "true",...

我尝试通过读取httpotion所依赖的ibrowse来设置代理参数,比如;

req = HTTPotion.get("httpbin.org/get", [{:proxy_host, "proxy.mydomain.com"}, {:proxy_port, 8080}])

但结果是一样的。

如何设置 httpotion 的代理参数?或者在 elixir 上是否有任何可以处理代理的 HTTP 访问替代库?

我的环境是 Ubuntu 14.04.2,环境变量(http_proxy、https_proxy、HTTP_PROXY 和 HTTPS_PROXY)设置正确。

【问题讨论】:

  • 如果你在这里得不到答案,可以在 HTTPoison 项目中询问:github.com/edgurgel/httpoison
  • 谢谢,何塞。我会在项目现场提问。我刚开始学习长生不老药,仍然对“原子开始于:”之类的新语法感到困惑。
  • @HirofumiTamori 如果您设法通过 httpoison 的问题跟踪器找到解决方案,请记得发布您的问题的答案 :)。
  • @whatyouhide 谢谢,我在 José 的通知下找到了 HTTPoison,并通过它的文档得到了使用。如果我下次使用问题跟踪器,我会小心的。

标签: proxy elixir


【解决方案1】:

看看httpoison tests:D

这是您如何使用代理执行获取请求:

HTTPoison.get!("http://www.google.com", [], [{:proxy, "proxy.company.address:port"}])

【讨论】:

  • 这些是HTTPoison's 测试,而不是HTTPotion's
【解决方案2】:

我刚刚通过阅读源代码自己弄清楚了这一点,但我现在注意到它记录在最新的自述文件中......

短版本(因为这个答案在 Google 搜索中比自述文件更早出现)是您需要将参数直接传递给 ibrowse,您可以使用 :ibrowse 选项执行此操作,然后还要注意 ibrowse 通常采用字符列表

所以,例如:

HTTPotion.get "httpbin.org/get", [ ibrowse: [ proxy_host: 'some.host', proxy_port: 8080 ] ]

注意,httpotion 似乎并不能很好地捕获异常,因为它不是“!”函数的版本...不使用字符列表或类似的会导致各种难以理解的异常...

【讨论】:

    猜你喜欢
    • 2018-08-01
    • 2011-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-28
    • 2011-07-28
    • 2016-11-04
    • 1970-01-01
    相关资源
    最近更新 更多