0

私はcrunchbase apiでレールを使用して企業の情報を取得していますが、一晩中このエラーと戦っています。1 つのリクエストを正常に完了し、2 番目のリクエストを構築した後にクラッシュし、次のエラーが表示されます。

Error/Users/Rich/.rvm/rubies/ruby-2.0.0-p195/lib/ruby/2.0.0/psych.rb:205:in `parse':
(<unknown>): control characters are not allowed at line 1 column 1 (Psych::SyntaxError)

必要なだけコードを投稿できます。私はルビーの初心者なので、すべての助けに感謝します。

def get_data(company_links)
  while i < company_links.length
    puts "USING URL #{URL}#{company_links[i]}.js?#{API_Key}"
    resp = RestClient.get("#{URL}#{company_links[i]}.js?#{API_Key}")
    arr = Crack::JSON.parse(resp)
    i += 1
  end
end

メソッドの呼び出し

links_array = ["dropbox","twitter"]
get_data(links_array)

回答が見つかりました編集 なぜ機能するのかはよくわかりませんが、解決したことに不満はありません。支援を提供してくれたすべての人に感謝します:)

def get_data(links_array)
    links_array.each do |会社|
    puts "USING URL #{URL}#{company}.js?#{API_Key}"
    resp = RestClient.get("#{URL}#{company}.js?#{API_Key}")
    arr = JSON.parse(応答)
    puts arr["名前"]
  終わり
終わり

4

2 に答える 2

2

あなたの問題は、取得ではなく、返される JSON にあるようです。以下で診断します。

def get_data(company_links)
  company_links.each do |company|
    puts "USING URL #{URL}#{company}.js?#{API_Key}"
    resp = RestClient.get("#{URL}#{company}.js?#{API_Key}")
    puts "RETURNS: #{resp}"
    arr = Crack::JSON.parse(resp)
  end
end

また、試してみてください

links_array = ["twitter","dropbox"]
get_data(links_array)

最初または 2 番目の要求で失敗するかどうかを確認します。

編集:JSON文字列の最初にCrack / Psychが嫌いな文字があり、それが「制御文字」であることは間違いありません;)

Edit2: コンソールに出力された JSON が有効な場合は、arr = Crack::JSON.parse(resp.to_s)またはを試してくださいarr = Crack::JSON.parse(resp.inspect)。ここでの重要な詳細の多くについて、私はあいまいです。

于 2013-05-31T07:25:27.453 に答える
1

正確な理由はわかりませんが、while ループを使用する代わりに、スレッドを使用して複数の要求を実行することを検討してください。個人的には、リクエストのループは良い考えではないと思います。

次の例を見てください。

Ruby on Rails複数のHTTPリクエストを同時に?

于 2013-05-31T07:05:40.877 に答える