我正在一个Rails应用程序中制作API,但是似乎在编码方面遇到了一些问题。我真的不确定实际出现了什么错误。我编写了一个模块,其中有两个类。其中一个类用于获取域名的一些DNS记录。当我单独实例化该类并调用方法时,它可以正常工作,但是当我在我的Rails应用程序中运行时,会出现一个错误,提示“从ASCII-8BIT到UTF-8”的\x90。以下是我的类的部分内容:
我的类中的索引方法完全正常。我像这样查询我的api:
更新
我发现尝试不同的域会抛出不同的错误。 google.com 抛出:
#
# Class initializer to set instance variable with domain
#
def initialize(domain)
@domain = domain
end
#
# Generates hash to be used in other methods
# @returns a hash with usefull info and made ready for later input
#
def generate_hash
hash = {
'timestamp' => Time.now.to_i,
'credits_remaining' => 123,
'response' => {
'domain' => @domain,
'records' => {}
}
}
return hash
end
#
# Get A Records for a domain
# @returns JSON formatted hash
#
def get_a_records
data = self.generate_hash
Resolv::DNS.open do |dns|
ress = dns.getresources @domain, Resolv::DNS::Resource::IN::A
p = ress.map { |r| r.address }
data['response']['records']['a'] = p
end
return data.to_json
end
以下是我的控制器代码:
require 'domainapi'
class CallsController < ApplicationController
def index
render json: {'status': 'OK'}
end
def dns
dns = DomainAPI::Dns.new(params[:domain])
response = dns.get_a_records
render json: response
end
end
我的类中的索引方法完全正常。我像这样查询我的api:
http://api.lvh.me:3000/v1/dns/a/stackoverflow.com
lvh.me
域是我使用的,以便我可以在本地使用子域名。
有人能看出可能的错误或对我有什么建议吗?更新
我发现尝试不同的域会抛出不同的错误。 google.com 抛出:
"\xF2" from ASCII-8BIT to UTF-8
facebook.com 抛出: "\xAD" from ASCII-8BIT to UTF-8
rubyonrails.org 抛出: "\xC0" from ASCII-8BIT to UTF-8