我有一个IOS应用程序的后端。我试图通过使用JSON从我的rails后端读取数据。我的bubbleWrap get请求如下。
BW::HTTP.get("url_here/children/1.json") do |response|
json = BW::JSON.parse response.body.to_str
for line in json
p line[:name]
end
end
它不会带来任何数据,它实际上会破坏我的代码。我找不到任何文档,其中包含如何使用rubymotion / Bubblewrap中的REST并将数据拉回我的应用程序的示例。
感谢任何帮助。
答案 0 :(得分:1)
这是我在很多应用程序中使用的一个方便的类抽象...它完全从视图控制器逻辑中抽象出API调用逻辑以分离关注点,并在Matt Green's {{3}之后进行了大量建模谈谈。
class MyAPI
APIURL = "http://your.api.com/whatever.json?date="
def self.dataForDate(date, &block)
BW::HTTP.get(APIURL + date) do |response|
json = nil
error = nil
if response.ok?
json = BW::JSON.parse(response.body.to_str)
else
error = response.error_message
end
block.call json, error
end
end
end
然后我们做这个课:
MyAPI.dataForDate(dateString) do |json, error|
if error.nil?
if json.count > 0
json.each do |cd|
# Whatever with the data
end
else
App.alert("No Results.")
end
else
App.alert("There was an error downloading data from the server. Please check your internet connection or try again later.")
end
end
答案 1 :(得分:0)
在解析响应正文之前,请务必检查响应代码。你可能
BW::HTTP.get(url) do |response|
if response.ok?
data = BW::JSON.parse(response.body.to_str)
# make sure you have an array or hash before you try iterating over it
data.each {|item| p item}
else
warn "Trouble"
end
end
另外,请确保您完整地检查JSON响应与您的代码的期望。也许JSON是一个数组而不是哈希?