2014-06-27 144 views
-1

我正在学习如何使用http请求。以下是返回JSON的代码。我所做的只是获得并打印出来。但我正面临一些错误。该错误也在下面给出。Http API请求

import java.io.*; 
import java.net.*; 

public class ZipTester { 

    public static void main(String[] args) throws IOException { 
     // TODO Auto-generated method stub 

     URL stck = new URL("http://www.zipfeeder.us/zip?key=Ect9O9ta&zips=14623"); 
     URLConnection yc = stck.openConnection(); 
     BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream())); 
     String inputLine; 
     String add=""; 
     while ((inputLine = in.readLine()) != null) { 
      //System.out.println(inputLine); 
      add=add+inputLine; 
     } 
     in.close(); 
     System.out.println(add); 

    } 

} 

这是错误。在我的旧机器中,这段代码工作得很好。这周我刚刚买了一台新机器。相同的代码现在不起作用。以前我用的是JDK 1.7,现在我使用JDK 1.8

Exception in thread "main" java.io.IOException: Server returned HTTP response code: 403 for URL: http://www.zipfeeder.us/zip?key=Ect9O9ta&zips=14623 
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(Unknown Source) 
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source) 
    at ZipTester.main(ZipTester.java:11) 
+3

A403中,意味着你被禁止访问该实体。 –

+0

你的新盒子启用了防火墙吗? –

+0

是的,我的防火墙已打开。那么我如何纠正这个错误呢? – user3342812

回答

0

您可以修复与添加User-Agent头这样的代码:

yc.addRequestProperty("User-Agent",""); //to avoid 403 error 

网站已可能更改访问规则和现在它请求一个“用户代理”。

的完整代码:

import java.io.*; 
import java.net.*; 

public class ZipTester { 

    public static void main(String[] args) throws IOException { 
     // TODO Auto-generated method stub 

     URL stck = new URL("http://www.zipfeeder.us/zip?key=Ect9O9ta&zips=14623"); 
     URLConnection yc = stck.openConnection(); 
     yc.addRequestProperty("User-Agent",""); //to avoid 403 error 
     BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream())); 
     String inputLine; 
     String add=""; 
     while ((inputLine = in.readLine()) != null) { 
      add=add+inputLine; 
     } 
     in.close(); 
     System.out.println(add); 

    } 

} 

我希望这会帮助你。

问候。

0

我通过设置用户代理与下面的值修复了这个问题:

yc.setRequestProperty("User-Agent","Mozilla/5.0");