问题标签 [httpoison]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
791 浏览

elixir - %HTTPoison.Error{id:无,原因::关闭}

我们在我们的代码库中使用 HTTPoison 来发布和获取请求,同时使用 hackney 池。在这里发帖只是因为我想从所有专家那里得到一些意见。

我们正在使用很多摄像头,我们从每个摄像头获取图像,然后将所有这些图像保存到seaweedFS服务器。

我们在每秒范围内发出近千个请求。在 seaweedFS 端,我们以 10 秒的超时时间启动了服务器。在我们的代码库方面,为了上传图片,我们使用了这个 hackney 配置。

在过去的几天里,我们在这方面遇到了问题。起初,我们这边的 timeout 和 max_connections 是 10 秒和 5K。我们开始收到这些 HTTPoison 错误

错误计数如此之高,几乎达到 12K 等等,所以暂时,在 Elixir Slack 频道讨论它之后,我将超时和 max_connections 更改为上述设置。在此之后,错误从 12K 减少到 3K,但仅持续了 2 或 3 天,之后错误计数再次变为 12K,依此类推。

开发 SeaweedFS 的人指出,我们用来发送 HTTP 请求的库没有关闭连接,而在我们的 seaweedFS 服务器端(我们的代码库向其发送读写请求的服务器)这个命令的结果是

谁能给我一些建议?这个错误的原因可能是什么?

我对 Elixir Slack Channel 和我所知道的关于 hackney 池的讨论很少为此请求发出的将保持打开状态另外 2 秒(完成 5 秒),以便其他 http post 请求可以使用仍然打开的连接?也许我在这个理论中是错误的。

但是,如果有人能指出我使用 hackney 池的一些更好的解决方案,那就太好了。

我们使用的是 HTTPoison 0.11.1,最终使用的是 hackney 1.7.1。

0 投票
1 回答
104 浏览

elixir - 使用 HTTPoison 的 HTTP 1.0 请求

如何使用 HTTPoison 发出 HTTP/1.0 请求?我不知道它使用的是哪个版本,但我假设它默认不是 1.0。

我正在与一些名为 MoneyWorks 的会计软件集成,他们建议尽可能使用 HTTP/1.0 以避免 2 秒超时延迟

我在 HTTPoison 文档中没有看到任何关于此的内容,所以我去了 Hackney 文档,因为它是基于此构建的。那里也没有看到任何东西。

0 投票
1 回答
1337 浏览

rest - 如何将 curl 翻译成 elixir httpoison

我有一个来自 api 的 curl 命令示例:

我不知道如何将其转换为 Elixir 的 HTTPoison。我已经尝试了几个小时。我什至不能开始提及我经历过的所有迭代,但这就是我现在所处的位置:

与我之前尝试过的大多数事情不同,它实际上到达了他们的服务器并给出了响应:

你能帮我吗?我尝试将数据放在正文部分而不是标题中,但没有运气。

0 投票
1 回答
526 浏览

rest - 使用 Elixir 和 HTTPoison 访问 Azure 存储服务 REST API

我正在尝试使用 Elixir通过他们的 REST API 访问 Azure 存储服务,但我很难让Authentication Header工作。如果我使用ex_azure包(erlazure的包装器),我可以连接,但当我尝试构建请求并使用HTTPoison时不能连接。

最近的错误消息

第一次编辑后

依赖项

代码

  • 我是否正在格式化身份验证标头 ( string_to_sign) 对吗?
  • 我使用编码/解码对吗?
  • 我是否将标头正确添加到 HTTPoison?
  • 我应该为 REST 操作使用其他东西而不是 HTTPoison 吗?

笔记

我使用/尝试过的一些资源...

0 投票
1 回答
478 浏览

utf-8 - httpoison - 显示乱码文本而不是 html 的响应正文

如果我尝试:

我在控制台中看到乱码文本(而不是 html)。但是如果我在网页上查看源代码,我会在那里看到 html。我究竟做错了什么?

PS:它适用于 js http 客户端(axios.js),不知道为什么它不适用于 httpoison

0 投票
1 回答
330 浏览

elixir - HTTPoison Multipart Post 请求 Spree API

尝试使用 HTTPoison 将图像发布到 Spree 的ProductImage API时,失败并出现 Rails 错误NoMethodError (undefined method 'permit' for #<ActionDispatch::Http::UploadedFile:0x007f94fa150040>)。我用来生成这个请求的 Elixir 代码是:

我可以通过以下调用使用 Curl 使其工作:

为了比较,这里是一个 RequestBin 捕获失败的 HTTPoison 请求和成功的 Curl 请求: https ://requestb.in/12et7bp1?inspect

为了让 HTTPoison 能很好地使用这个 Rails API,我需要做什么?

0 投票
1 回答
339 浏览

proxy - 如何通过 HTTPoison 将代理 api 令牌设置为 hackney 上的身份验证?

我在使用 HTTPoison 对 Crawlera 服务进行身份验证时遇到问题。

crawlera 的 API 文档说我只需要 API 令牌。

IEcurl -vx proxy.crawlera.com:8010 -U <API key>: http://httpbin.org/ip

所以,我在设置 HTTPoison 设置的身份验证选项时遇到问题。

我正在尝试这 3 个选项:

HTTPoison.get("url", header, hackney: [:insecure], proxy: 'proxy.crawlera.com:8010', proxy_auth: 'api-token') 错误->(FunctionClauseError) no function clause matching in :hackney.do_connect/7

HTTPoison.get("url", header, hackney: [:insecure], proxy: 'proxy.crawlera.com:8010', proxy_auth: {'api-token',''}) 错误->(ArgumentError) argument error :erlang.bit_size([])

HTTPoison.get("url", header, hackney: [:insecure], proxy: 'api-token:@proxy.crawlera.com:8010') 错误->{"X-Crawlera-Error", "bad_proxy_auth"}

如果有人知道如何正确设置参数,我将不胜感激。

0 投票
2 回答
976 浏览

curl - Phoenix/Elixir - cURL 有效,但 HTTPoison 失败

在我的 Phoenix 应用程序中,我正在尝试使用 HTTPoison HTTP 客户端 ( https://hexdocs.pm/httpoison/api-reference.html ) 向 AgileCRM API 发出发布请求。我能够使用 cURL 发出成功的请求,但我在 Phoenix 中复制它的尝试失败并出现 401UNAUTHORIZED错误。

我成功的卷曲:

它返回状态200和请求的数据。

我失败的 HTTPoison:

返回

从消息中,我假设(可能不正确)问题出在授权数据上。我的理解是-ucURL 中的标志相当于添加Authorization标题,但也许不是?

HTTPoison 还允许一个options参数,其中一个选项(哈哈!)是“:proxy_auth - 代理身份验证 {User, Password} 元组”,但传递[proxy_auth: {"admin@test.com", "api_key"}]会产生相同的结果。

对此的任何想法将不胜感激

0 投票
1 回答
593 浏览

elixir - Elixir 中的 HTTPoison.get() 错误

我有以下网址

https://www.michaelkors.com/four-in-one-logo-belt-box-set/_/R-US_39F6LBLY4B?color=0200

并且需要通过HTTPoison.get获取页面正文。以下方法给出超时错误

对于其他 URL,它可以工作,似乎是由于 URL 中的特定模式引起的错误

0 投票
2 回答
787 浏览

elixir - 可以使用 HTTPoison 为 localhost 指定端口吗?

我正在做一个测试,在这个测试中我需要点击我在本地运行的服务。该服务是一个公开了 JSON api 的 rails 应用程序。它在端口 3000 上运行。当我执行这个 elixir 代码时,我得到一个错误:

我得到的错误是:

{:error, %HTTPoison.Error{id: nil, reason: :econnrefused}}

我应该注意,当我执行该代码时,服务日志中没有找到输出。

我的问题是可以指定端口吗?如果可以的话,我是否通过简单地将其构建到 url 中正确地做到了这一点?

我想接下来的问题是我可能会得到这个 :econnrefused 错误的原因是什么?

我什至不确定我在问正确的问题:P

谢谢