无法访问java中的API数据和JSON解析错误
解决并修改代码 我试图用java从烂番茄API中检索数据,这是一个简单的聊天机器人。当我将URI粘贴到浏览器中时,它就会工作。但是我的代码没有返回相同的结果,我不确定我做错了什么 第二个问题是,我的“JsonReader”无法解析为类型,并且我没有导入它的选项。我一直在用 代码如下:无法访问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
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();
}