【发布时间】:2015-12-13 21:17:02
【问题描述】:
我尝试通过 Postman 向设备的 Restful API 发送 HTTP Get,它可以正常返回所有我期望的文本。 Postman 建议该请求的 Ruby 代码如下:
url = URI('http://192.168.1.5/rest/op/BD1FD3D893613E79')
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request.basic_auth 'admin', 'admin'
request["accept"] = 'Application/json'
response = http.request(request)
puts response.read_body
但是当我在我的代码中尝试这样做时,它返回了一个截断的响应(缺少行),我必须多次重新发送相同的 Get 以获得整个文本响应响应。
上面的 Ruby 代码中是否缺少任何导致此截断响应的内容?
更新 1
我试过了
url = URI('http://192.168.1.5/rest/op/BD1FD3D893613E79')
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request.basic_auth 'admin', 'admin'
request["accept"] = 'Application/json'
response = http.request(request)
puts response.read_body
response.read_body do |segment|
puts segment.to_s
end
并且产生了这个错误
IOError (Net::HTTPOK#read_body called twice):
更新 2
我试过了
1073 url = URI('http://192.168.1.5/rest/op/BD1FD3D893613E79')
1074 http = Net::HTTP.new(url.host, url.port)
1075 request = Net::HTTP::Get.new(url.to_s)
1076 request.basic_auth 'admin', 'admin'
1077 request["accept"] = 'Application/json'
1078 response = http.request(request)
1079 response.read_body do |segment|
1080 puts segment.to_s
1081 end
得到了这个错误
IOError (Net::HTTPOK#read_body called twice):
app/controllers/Apps_controller.rb:1079:in `block in get_config'
app/controllers/Apps_controller.rb:1045:in `each'
app/controllers/Apps_controller.rb:1045:in `get_config'
【问题讨论】:
-
删除
puts response.read_body这一行 -
感谢@Aguardientico 的跟进。我尝试了更新 2 中显示的建议,但仍然没有运气
-
您是否尝试在同一个服务器实例中同时运行 API 和客户端?你用的是什么服务器?
-
@Aguardientico :感谢您的跟进。客户端是我的 RoR 应用程序,服务器是第 3 方设备。我不知道那里正在运行什么服务器。我只有使用他们的 API 的说明,当我使用 Postman 时它工作正常,但我的应用程序如上所述失败。
-
@rh4games - 你解决了这个问题吗?