2013-05-30 9 views
5

Obecnie używam apl imdb z http://imdbapi.org, aby uzyskać informacje o filmie. Kiedy używam API i próbuję otworzyć to url w java, daje mi to błąd 403. Adres URL powinien zwracać dane w JSON. Oto mój kod tak daleko (Java 7):Dlaczego pojawia się błąd 403, gdy próbuję otworzyć adres URL?

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

To rzeczywiście dziwne, ponieważ ten URL działa na mnie. – fge

Odpowiedz

13

Należy ustawić 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"); 

lub

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

Tak, to jest to: z wiersza poleceń zrobić coś w rodzaju 'curl -v --user-agent" Java/1.6.0_14 "http: //imdbapi.org/? Q = batman' i 403 Forbidden błąd pojawia się i Treść HTML: 'Właściciel tej witryny (imdbapi.org) zablokował twój dostęp na podstawie podpisu Twojej przeglądarki'. –