2017-07-19 4 views
0

私はthemovidedb.org APIを使用して、Javaプログラムで映画情報を取得しています。Javaでthemoviedb.org APIを使用する方法

{"adult":false,"backdrop_path":"/87hTDiay2N2qWyX4Ds7ybXi9h8I.jpg","belongs_to_collection":null,"budget":63000000,"genres":[{"id":18,"name":"Drama"}],"homepage":"http://www.foxmovies.com/movies/fight-club","id":550,"imdb_id":"tt0137523","original_language":"en","original_title":"Fight Club","overview":"A ticking-time-bomb insomniac and a slippery soap salesman channel primal male aggression into a shocking new form of therapy. Their concept catches on, with underground \"fight clubs\" forming in every town, until an eccentric gets in the way and ignites an out-of-control spiral toward oblivion.","popularity":9.922193999999999,"poster_path":"/adw6Lq9FiC9zjYEpOqfq03ituwp.jpg","production_companies":[{"name":"Regency Enterprises","id":508},{"name":"Fox 2000 Pictures","id":711},{"name":"Taurus Film","id":20555},{"name":"Linson Films","id":54050},{"name":"Atman Entertainment","id":54051},{"name":"Knickerbocker Films","id":54052}],"production_countries":[{"iso_3166_1":"DE","name":"Germany"},{"iso_3166_1":"US","name":"United States of America"}],"release_date":"1999-10-15","revenue":100853753,"runtime":139,"spoken_languages":[{"iso_639_1":"en","name":"English"}],"status":"Released","tagline":"Mischief. Mayhem. Soap.","title":"Fight Club","video":false,"vote_average":8.199999999999999,"vote_count":8430} 

がどのように応答を解析することができます。これは、コンソールの応答が

 url = new URL("http://api.themoviedb.org/3/movie/550?api_key={MY_API_KEY}"); 
     HttpURLConnection con = (HttpURLConnection) url.openConnection(); 

     con.setDoOutput(true); 
     con.setRequestMethod("GET"); 
     con.setRequestProperty("Content-Type", "application/json"); 

     BufferedReader br = new BufferedReader(new InputStreamReader((con.getInputStream()))); 

     String output; 
     System.out.println("Output from Server .... \n"); 
     while ((output = br.readLine()) != null) { 
      System.out.println(output); 
     } 

です:

この

は私がthemovidedb.orgとのリンクのために自分のアプリケーションを使用している機能です任意の属性を取得する(例: 'original_title'、 'relase-date')、コード内で使用しますか?

プログラムをデータベースにリンクする別の方法があります(WebResourceクラスなど)。

+1

あなたはむしろhttps://www.themoviedb.orgに言及したもののようなHTTP APIを中心に、既存のJavaラッパーを使用する必要があります/ documentation/api/wrappers-libraries - あなたのアプローチを徹底させたい場合は、jsonパーサが必要です(または1つ書く)。 PS: 'setDoOutput(true);'は 'POST'と' PUT'リクエストに対応し、 'Content-Type'はリクエストや返信にコンテンツ本体が含まれている場合のみ関連します。リクエストに「Accept:application/json」を設定し、サーバーにどのタイプを望むかを伝えたいかもしれません。 – zapl

答えて

1

結果はJSONを使用してフォーマットされます。それを解析するために使用できる多くのJavaライブラリがあります。 Java EEのbuilt-in methodJsonObjectを使用します。

JsonReader rdr = Json.createReader(con.getInputStream()); 
JsonObject obj = rdr.readObject(); 
String title = obj.getString("original_title"); 

Androidの場合はJSONObjectです。

その他の要件がある場合は、これを実行できる他の多くのライブラリがあります。 Android用VolleyのようなJSONを取得することが簡単にいくつかのHTTPライブラリもあります

JsonObjectRequest jsObjRequest = new JsonObjectRequest 
     (Request.Method.GET, "http://api.themoviedb.org/3/movie/550?api_key={MY_API_KEY}", null, new Response.Listener<JSONObject>() { 

    @Override 
    public void onResponse(JSONObject response) { 
     System.out("title: " + response.getString("original_title")); 
    } 
}, new Response.ErrorListener() { 

    @Override 
    public void onErrorResponse(VolleyError error) { 
     // TODO Auto-generated method stub 

    } 
}); 
関連する問題