无法在java中访问API数据和JSON解析错误

时间:2014-10-11 12:18:18

标签: java json api

已解决并修改了代码。

我尝试使用java从烂番茄API中检索数据,这是一个简单的聊天机器人。将URI粘贴到浏览器中时,我的URI工作正常。但是我的代码没有返回相同的结果,我不确定我做错了什么。

第二个问题是我的JsonReader'无法解析为某种类型,我无法选择导入它。我一直在使用this guide!

代码如下:

    String url = http://api.rottentomatoes.com/api/public/v1.0/movies.json?q=queryText&page_limit=10&page=1&apikey=[]


            try {
                urlObj = new URL(url); //The URI to be used. 
                con = (HttpURLConnection) urlObj.openConnection(); //OPen a connection to the URI

                //int responseCode = con.getResponseCode();
                //System.out.println("\nSending 'GET' request to URL : " + url);
                //System.out.println("Response Code : " + responseCode);


                scan = new Scanner(urlObj.openStream());

            String strResultSet = "";
                while (scan.hasNext()) {
                    strResultSet+= scan.nextLine();
                     }

                //System.out.println("StrJson"+strResultSet);
                JSONObject JSONResultSet = new JSONObject(strResultSet);
                JSONArray results = JSONResultSet.getJSONArray("movies");
                JSONObject firstResult = results.getJSONObject(0);
                movie.setTitle(firstResult.getString(KEY_TITLE));
                movie.setId(firstResult.getString(KEY_ID));

                con.disconnect();
                scan.close();

2 个答案:

答案 0 :(得分:0)

我不确定这是如何编译的。你似乎试图从你的" url"中获取一个InputStream。串。

您应该在HttpURLConnection上调用getConnection(),如con.getInputStream()

此外,您正在打印,但实际上没有检查responseCode。它可能并不总是表明成功。

以下是http://www.tbray.org/ongoing/When/201x/2012/01/17/HttpURLConnection

的一个很好的例子

`void get(URL url){

//这没有网络IO   HttpURLConnection conn = url.openConnection();   InputStream in;   int http_status;   试试{

// this opens a connection, then sends GET & headers 
in = conn.getInputStream(); 

// can't get status before getInputStream.  If you try, you'll
//  get a nasty exception.
http_status = conn.getResponseCode();

// better check it first
if (http_status / 100 != 2) {
  // redirects, server errors, lions and tigers and bears! Oh my!
}

} catch(IOException e){     //发生了一件可怕的事情,如网络错误,或者你     //在HUC准备好之前,愚蠢地调用了getResponseCode()。     //基本上没有on" conn"现在工作,所以不要去     //在那里寻求帮助   }

尝试{     //现在您可以尝试使用数据     try_reading(IN);   } catch(IOException e){     //网络IO狮子和老虎和熊!天啊!   } finally {     //像妈妈说的那样,保持良好的卫生习惯。     conn.disconnect();   } }`

答案 1 :(得分:0)

我使用scanner对象迭代结果集解决了问题。

scan = new Scanner(urlObj.openStream());
String strResultSet = "";
while (scan.hasNext()) { 
    strResultSet+= scan.nextLine();
}