質問: javaで外部APIを使う方法について ニコ生APIを使ってコメントを取得しようと思ったのですが、APIの構文がよくわからないでいます。 調べてもjavaAPIのことばかり出てきてしまって。
回答: panpan_teaさん 、ニコ生APIね。 途中まで調べた人の”ニコニコ解析メモ”のURLは、御覧になりましたか? まず、APIの階層構造に則って、下位の階層から順に理解されることを、お勧めします。 ニコニコ生放送のコメント情報を、参照するまでのAPIの階層は、こんな感じです。 1ソケット通信の階層:java.net.socket等の標準API 2HTTP client APIの階層:java.net.HttpURLConnection等の標準API この階層で、連続的に電文を受信しようとしたときに、 最初の1回目はhttp status code=200で電文がフルセットダウンロードされるが、 2回目以降はhttp status code=304 Not Modifiedが変えるので、直前の電文を保存しないと駄目とか、 cookieも 保存しておかないと駄目とか、 ブラウザのエミュレーションみたいな操作が要ります。 >他のこんなクラスを使ったほうがいいとかは避けていただきたい つまり、以下のライブラリは、存在していても、使わないということですね。 3RESTful通信(JAX-RS規格準拠)のAPIのPOST dataの電文フォーマット:XMLやJSON電文を処理するJavaライブラリ >APIの構文がよくわからないでいます。 ”構文”というと、この3の階層の業界標準プロトコルに従った電文フォーマットで、 ニコ生APIの場合、殆どXML形式電文です。 一部json形式電文です。 4RESTful通信(JAX-RS規格準拠)のAPIの階層:HTTP clientを更に 包み込んだJavaライブラリ この階層のAPIは、1回分の送受信だけですが、Javaの規格として標準化されています。 >調べてもjavaAPIのことばかり出てきてしまって。 次の階層のAPIを理解するためには、少なくとも34のJAVA APIの階層の知識がないと、理解出来ないでしょう。 5ニコニコ生放送の通信プロトコル: さらに、この階層のAPIで、ようやく、「最初にログインして、次は、ログインしたときにサーバから貰った何かを引き継いで、後続リクエストに渡す」といった、複数の送受信の 取り決めが出てきます。 つまり、構文と呼ばれている=電文フォーマットを 覚えただけでは、まだ、ニコニコ生放送のデータを読むようなプログラムは作れないということです。 そして、その取り決めた順序通りのプロトコルに従わないと、添付の図のように、”notlogin”という、そっけないXML形式電文が帰ってきます。 しかも、5の階層のプロトコルは、主催元が公開しない限り、誰も「コレが正しい”ニコニコ生放送の通信プロトコル”だ」と言えないのですから、アングラな情報で、それを調べるのにはハッキング的な苦労がいるでしょうし、ソレを使うのにもリスクが生じます。 <関連URL> ニコニコ解析メモ http://sourceforge.jp/projects/nicolib/wiki/%E3%83%8B%E3%82%B3%E3%8...