質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

URL

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

1回答

297閲覧

Rubyでニコニコ動画APIが叩けない

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

URL

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

1クリップ

投稿2017/09/18 11:27

###前提・実現したいこと
Rubyで、ニコニコ動画のAPIを叩きたいです。
今回は、クライアントから簡単な検索結果をもらい、それを標準出力(puts)したいです。
自分が書いたコードですと、レスポンスが400と共に以下のJSONを返します。

公式サイトを見ても400の仕様で考えても、私のせいでサーバ側がURIを理解できていないのだと思います。
ですが、下記に載せた、エンコーディングを最小限に抑えたURIでも400がかえってくるので、これ以上は知識がないから修正できないのだと判断しました。

ブラウザですとニコニコ動画へのログイン状態の有無、ブラウザの種類、GETに埋め込みたいクエリを問わず成功します。

###発生している問題・エラーメッセージ

{"meta":{"status":400,"errorCode":"QUERY_PARSE_ERROR","errorMessage":"query parse error","id":"4f0fcce2-1ec1-4713-9952-d9cabdaaf35c"}}

400の場合の仕様通りの返答です: http://site.nicovideo.jp/search-api-docs/search.html

###該当のソースコード

Ruby

1require 'uri' 2require 'net/http' 3require 'json' 4 5uri = URI.escape("http://api.search.nicovideo.jp/api/v2/video/contents/search?q=初音ミク&targets=title&_sort=-viewCounter&&_context=apiguide") 6uri = URI.parse(uri) 7http = Net::HTTP.new(uri.host, uri.port) 8 9req = Net::HTTP::Get.new(uri.path) 10res = http.request(req) 11puts res.body

必須クエリはq, targets, _context, _sortとなります。
検索クエリは初音ミクでなくても構いませんし、他の設定もどうでもいいので、まずは動くようにしたいです。

###補足情報(言語/FW/ツール等のバージョンなど)
Macを使用、OS10.11

$ ruby -v ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-darwin15]

どのようにすれば検索結果が返ってくるでしょうか。ご教示願います。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

req = Net::HTTP::Get.new(uri.path)

上記で uri.path を引数として渡していますが、uri を渡すと結果が返却されるかと思います。

投稿2017/09/18 11:39

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問