使用HTTP :: Client.get(“ https ...”)的封闭流(IO :: Error)

问题描述 投票:0回答:1

我对两个代码有些困惑。

    uri = URI.parse("https://api.exchangeratesapi.io")
    client = HTTP::Client.new(uri)
    client.get("/latest?base=EUR") do |response|
      p response.body_io.gets
    end

它按预期工作,但是

    response = HTTP::Client.get("https://api.exchangeratesapi.io/latest?base=EUR")
    p response

失败

Closed stream (IO::Error)
         from /usr/share/crystal/src/io.cr:128:5 in 'check_open'
         from /usr/share/crystal/src/io/buffered.cr:99:5 in 'peek'
         from /usr/share/crystal/src/io.cr:632:37 in 'gets'
         from /usr/share/crystal/src/io.cr:591:5 in 'gets'
         from /usr/share/crystal/src/io.cr:814:5 in 'read_line:chomp'
         from /usr/share/crystal/src/http/content.cr:205:7 in 'read_chunk_size'
         from /usr/share/crystal/src/http/content.cr:187:26 in 'next_chunk'
         from /usr/share/crystal/src/http/content.cr:120:7 in 'read'
         from /usr/share/crystal/src/io.cr:554:29 in 'gets_to_end'
         from /usr/share/crystal/src/http/client/response.cr:81:15 in 'consume_body_io'
         from lib/webmock/src/webmock/core_ext.cr:12:7 in 'exec_internal'
         from /usr/share/crystal/src/http/client.cr:576:5 in 'exec'
         from /usr/share/crystal/src/http/client.cr:698:5 in 'exec'
         from /usr/share/crystal/src/http/client.cr:730:7 in 'exec'
         from /usr/share/crystal/src/http/client.cr:402:3 in ‚get

我使用Crystal 0.33。知道什么可以解决第二个代码吗?

crystal-lang
1个回答
0
投票

在日志中,我看到lib/webmock/src/webmock/core_ext.cr(通常不应该在那儿),似乎是它的影响导致了问题,而且隔离的代码也可以正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.