【发布时间】:2018-06-12 15:24:07
【问题描述】:
我从 HTTP 流服务请求信息。它以 JSON 格式提供数据。这里是the documentation。这是我正在使用的代码的一部分:
require 'uri'
require 'net/https'
require 'json'
uri = URI("https://api.tradier.com/v1/markets/events/session")
http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Post.new(uri.request_uri)
http.read_timeout = 30
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
# Headers
request["Accept"] = "application/json"
request["Authorization"] = "Bearer xxx"
# Send synchronously
response = http.request(request)
# parses response
parse = JSON.parse(response.body)
#out puts values only from response
sessionid = parse.values[0]["sessionid"]
url = parse.values[0]["url"]
uri = URI("#{url}?sessionid=#{sessionid}&symbols=aapl")
http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Post.new(uri.request_uri)
http.read_timeout = 30
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
# Headers
request["Accept"] = "application/json"
request["Authorization"] = "Bearer xxx"
http.request request do |response|
response.read_body do |data|
puts data.class
# info = JSON.parse(data, :quirks_mode => true)
# puts info.values
end
end
我想让系统继续执行该程序。看来我需要使用begin 和rescue,但我无法让它们工作。当我请求数据时,我收到以下错误:
`parse': 757: '{"type":"trade","symbol":"AAPL","exch":"Q","price":"191.23","size": "1081622","cvol":"18308460","date":"1528747200000","last":"191.23"}{"type":"summary","symbol":"AAPL","open":" 191.35","high":"191.97","low":"190.21","prevClose":"191.7","close":"191.23"}' (JSON::ParserError)
【问题讨论】:
-
请分享您如何构建请求以及响应的值是什么。
-
取决于您的库,它可能已经将 JSON 解析为哈希;在
info = JSON...之前做一个puts data.class并检查一下 -
嘿乔希,我继续做了,它吐出了“字符串”
-
我已经添加了整个脚本。我首先必须获得一个会话 ID,然后使用它来打开字符串。
-
你能发布实际产生错误的数据字符串吗?或者它是黄色引号中 ' ' 之间的完整字符串?在那种情况下,似乎有一个奇怪的
}{
标签: ruby