我对两个代码有些困惑。
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。知道什么可以解决第二个代码吗?
在日志中,我看到lib/webmock/src/webmock/core_ext.cr
(通常不应该在那儿),似乎是它的影响导致了问题,而且隔离的代码也可以正常工作。