2013-05-30 19 views
5

ムービーに関する情報を得るために、現在http://imdbapi.orgのimdb apiを使用しています。私は、APIを使用してこのurlを開こうとすると、それは私に403エラーを与える。 urlはJSONのデータを返すことになっています。ここ は、これまでに(Javaの7)私のコードです:URLを開こうとすると403エラーが発生する

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.net.MalformedURLException; 
import java.net.URL; 

public class Test { 
    public static void main(String[] args) { 
     URL url =null; 
     try { 
      url = new URL("http://imdbapi.org/?q=batman"); 
     } catch (MalformedURLException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     InputStream is =null; 
     try { 
      is = url.openConnection().getInputStream(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     BufferedReader reader = new BufferedReader(new InputStreamReader(is) ); 
     String line = null; 
     try { 
      while((line = reader.readLine()) != null) { 
       System.out.println(line); 
      } 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     try { 
      reader.close(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     System.out.println(line); 
    } 
} 
+1

このURLは私のために働くので、確かに奇妙です。 – fge

答えて

13

あなたはUser-Agent設定する必要があります。

System.setProperty("http.agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.29 Safari/537.36"); 

または

URLConnection connection = url.openConnection(); 
connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.29 Safari/537.36"); 
is = connection.getInputStream(); 
+1

はい、それです:コマンドラインから 'curl -v --user-agent" Java/1.6.0_14 "http://imdbapi.org/?q = batman'のように実行し、403 Forbiddenエラーが表示され、 HTML本文は 'このウェブサイト(imdbapi.org)の所有者があなたのブラウザの署名に基づいてあなたのアクセスを禁止しました 'です。 –