[英]Ruby GET response body encoded?
嘿,我试图让 API 请求工作,但不知何故 Ruby GET 把它搞砸了。 我在 docker 容器中运行该应用程序,当我在容器内使用 curl 时,它返回正确的值。 这是我的代码:
class StatisticsController < ApplicationController
def index
@group = Group.find(params[:statistic_group_id])
@devices = @group.devices
pids = @devices.map{|d| d.hwg['pid']}.uniq
pid = {'pid' => pids}
get(pid)
end
def get(params)
require 'net/http'
require 'uri'
password = "something"
user = "something"
url = URI( "something").tap do |uri|
uri.query = URI.encode_www_form(params)
end
https = Net::HTTP.start(url.host, url.port, use_ssl: url.scheme == 'https')
request = Net::HTTP::Get.new(url, 'Content-Type' => 'application/json')
request.basic_auth(user, password)
response = https.request(request)
@body = response.body
end
end
"\\\x8B\\b\ \ \ \ \ \ \\\x8A\\x8E\\ \ \ \\xFF\\xFF\\u000r\\u000r\ \\xFF\\xFF\\u000r \ \ " 这就是我得到的 response.body。 响应头是 200(所以应该没问题?)
这就是我应该得到的 [](空 json 数组)。 该 url 似乎已成功创建(因为如果我一一执行命令,它可以在我从控制台粘贴它时起作用)。 老实说,我不知道会出什么问题。
编辑:问题是 Ruby 默认编码覆盖了响应中发送的编码标头。 这可以通过添加“接受编码”来解决
request = Net::HTTP::Get.new(url, 'Content-Type' => 'application/json', 'Accept-Encoding' => 'utf-8')
在我看来,您的回复已被压缩。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.