无法读取来自 Ruby 的大 json 响应
Cannot read big json response from Ruby
我有两个项目,我称之为服务器和客户端项目。
在服务器端,我使用的是网络服务。我向
此 Web 服务,它 return 给我一个很长的 JSON 响应。那我可以
做一些业务逻辑,然后 return 我的回应。
当我从网络浏览器发送请求时,我可以验证服务器端
return 如我所料,一个非常大的 JSON 对象(大约 4000 行长)。
当我从客户端向服务器端发送请求时,问题就出现了。
我看不到完整的回复。我只能看到前 10 行,而
底部 3 行。中间部分没了!
我已经尝试了三个Ruby gem,分别是Rest-client、Typhoeus 和Faraday。
你可以在下面看到我是如何使用它们的。
P.S。我对简短的回复没有问题。但是当涉及到
big/large/long 回应只是把中间切掉。
斑疹伤寒:
request = Typhoeus::Request.new( "http://localhost:3000/api/json", method: :get, followlocation: true,
params: { function: "getAirAvailability", tripType: params[:tripType], departureDateTime: params[:departureDateTime] , destinationLocation: params[:destinationLocation] , originLocation: params[:originLocation] , passenger_adult: params[:adult], passenger_child: params[:child], passenger_infant: params[:infant], passenger_soldier: params[:soldier] },
headers: { Authorization: "Chg25WxSvQsBsxKyVKyV"})
法拉第:
conn = Faraday.new(:url => 'http://localhost:3000/api/json', headers: { "Authorization" => "Chg25WxSvQsBsxKyVKyV" }) do |faraday|
faraday.response :logger
faraday.adapter Faraday.default_adapter
end
response = conn.get '/api/json', { function: "getAirAvailability", tripType: "ONE_WAY", departureDateTime: "2016-06-17" , destinationLocation: "ESB" , originLocation: "CKZ" , passenger_adult: 1, passenger_child: 0, passenger_infant: 0, passenger_soldier: 0 }
return response
休息客户端::
response = RestClient.get "http://localhost:3000/api/json", { params: { function: "getAirAvailability", tripType: "ONE_WAY", departureDateTime: "2016-06-17" , destinationLocation: "ESB" , originLocation: "CKZ" , passenger_adult: 1, passenger_child: 0, passenger_infant: 0, passenger_soldier: 0 } , :Authorization => "Chg25WxSvQsBsxKyVKyV" }
使用method: POST
代替GET
(因为GET
查询有限制)
我有两个项目,我称之为服务器和客户端项目。
在服务器端,我使用的是网络服务。我向 此 Web 服务,它 return 给我一个很长的 JSON 响应。那我可以 做一些业务逻辑,然后 return 我的回应。
当我从网络浏览器发送请求时,我可以验证服务器端 return 如我所料,一个非常大的 JSON 对象(大约 4000 行长)。
当我从客户端向服务器端发送请求时,问题就出现了。 我看不到完整的回复。我只能看到前 10 行,而 底部 3 行。中间部分没了!
我已经尝试了三个Ruby gem,分别是Rest-client、Typhoeus 和Faraday。 你可以在下面看到我是如何使用它们的。
P.S。我对简短的回复没有问题。但是当涉及到 big/large/long 回应只是把中间切掉。
斑疹伤寒:
request = Typhoeus::Request.new( "http://localhost:3000/api/json", method: :get, followlocation: true,
params: { function: "getAirAvailability", tripType: params[:tripType], departureDateTime: params[:departureDateTime] , destinationLocation: params[:destinationLocation] , originLocation: params[:originLocation] , passenger_adult: params[:adult], passenger_child: params[:child], passenger_infant: params[:infant], passenger_soldier: params[:soldier] },
headers: { Authorization: "Chg25WxSvQsBsxKyVKyV"})
法拉第:
conn = Faraday.new(:url => 'http://localhost:3000/api/json', headers: { "Authorization" => "Chg25WxSvQsBsxKyVKyV" }) do |faraday|
faraday.response :logger
faraday.adapter Faraday.default_adapter
end
response = conn.get '/api/json', { function: "getAirAvailability", tripType: "ONE_WAY", departureDateTime: "2016-06-17" , destinationLocation: "ESB" , originLocation: "CKZ" , passenger_adult: 1, passenger_child: 0, passenger_infant: 0, passenger_soldier: 0 }
return response
休息客户端::
response = RestClient.get "http://localhost:3000/api/json", { params: { function: "getAirAvailability", tripType: "ONE_WAY", departureDateTime: "2016-06-17" , destinationLocation: "ESB" , originLocation: "CKZ" , passenger_adult: 1, passenger_child: 0, passenger_infant: 0, passenger_soldier: 0 } , :Authorization => "Chg25WxSvQsBsxKyVKyV" }
使用method: POST
代替GET
(因为GET
查询有限制)