您的位置:首页 > 移动开发 > Android开发

android使用豆瓣API出现500错误及解决方法

2013-12-11 21:04 609 查看
为团队做一个图书管理的应用,涉及到扫描ISBN然后查询图书信息,本来是通过豆瓣API来查询的,不过昨天却发现突然不能用了,返回的是500错误,internal server error。

代码如下:

DefaultHttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet(AppConstants.DOUBAN_API + isbn);
try {
HttpResponse response = client.execute(request);
int statusCode =response.getStatusLine().getStatusCode();
if(statusCode != 200 && statusCode != 300) {
updateBookInfoView("无法获取图书信息。错误编号:" + statusCode);
return ;
}
Book book = XMLSax.sax(response.getEntity().getContent());
String summary = book.getSummary();
summary = summary.substring(0,
summary.length() < 60 ? summary.length() : 60)
.concat("...");
String string = String.format(getString(R.string.book_info),
book.getName(), book.getAuthor(),
book.getPublisher(), book.getIsbn13(), summary);
updateBookInfoView(string);
} catch (Exception e) {
e.printStackTrace();
}


这让我感到很奇怪,因为同样的代码在之前还是没问题的。然后在浏览器上进行访问,却又正常。

这是使用HttpGet和HttpClient的方法。

今天换了另一种方法,代码如下:

try {
HttpURLConnection conn = (HttpURLConnection) new URL(
AppConstants.DOUBAN_API + isbn)
.openConnection();
conn.setConnectTimeout(3000);
conn.setRequestMethod("GET");
if (conn.getResponseCode() != 200) {
updateBookInfoView("无法获取图书信息。错误编号:"
+ conn.getResponseCode());
return;
}
Book book = XMLSax.sax((GZIPInputStream) conn
.getContent());
String summary = book.getSummary();
summary = summary.substring(0,
summary.length() < 60 ? summary.length() : 60)
.concat("...");
String string = String.format(
getString(R.string.book_info), book.getName(),
book.getAuthor(), book.getPublisher(),
book.getIsbn13(), summary);
updateBookInfoView(string);
} catch (Exception e) {
e.printStackTrace();
}


这回正常了。虽然不知道是不是这段期间豆瓣的API在内部实现上改变了还是什么原因导致了这个问题,不过总算先是把这个问题给解决了。

PS:source from /article/4384828.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐