Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法访问java中的API数据和JSON解析错误_Java_Json_Api - Fatal编程技术网

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

无法访问java中的API数据和JSON解析错误,java,json,api,Java,Json,Api,解决并修改代码 我试图用java从烂番茄API中检索数据,这是一个简单的聊天机器人。当我将URI粘贴到浏览器中时,它就会工作。但是我的代码没有返回相同的结果,我不确定我做错了什么 第二个问题是,我的“JsonReader”无法解析为类型,并且我没有导入它的选项。我一直在用 代码如下: String url = http://api.rottentomatoes.com/api/public/v1.0/movies.json?q=queryText&page_limit=10&am

解决并修改代码

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

第二个问题是,我的“JsonReader”无法解析为类型,并且我没有导入它的选项。我一直在用

代码如下:

    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();

我不确定这是如何编译的。您似乎试图从“url”字符串获取InputStream

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

此外,您正在打印,但实际上没有检查响应代码。它可能并不总是表示成功

这里有一个很好的例子

`无效获取(URL){

//这不需要网络IO HttpURLConnection conn=url.openConnection(); 输入流输入; int http_状态; 试一试{

}捕获(IOE异常){ //发生了可怕的事情,如网络错误,或者您 //在HUC准备好之前愚蠢地调用了getResponseCode()。 //基本上,在“conn”上的任何方法现在都不起作用,所以不要去 //在那里寻求帮助。 }

试一试{ //现在您可以尝试使用这些数据 试着(用英语)阅读; }捕获(IOE异常){ //狮子、老虎和熊!天哪! }最后{ //照妈妈说的做,保持良好的卫生习惯。 连接断开(); }
}`

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

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

当然,上面的JSON并不完整,也不会解析。这就是你收到的全部,还是仅仅是一个样本?你所说的“默认响应”是什么意思?我希望您用实际的API密钥替换URL中的括号。上面的JSON只是一个示例是的。movies数组包含许多JSON对象。默认情况下,我指的是显示的内容,是的,我已经移除了角括号。
scan = new Scanner(urlObj.openStream());
String strResultSet = "";
while (scan.hasNext()) { 
    strResultSet+= scan.nextLine();
}