为团队做一个图书管理的应用,涉及到扫描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在内部实现上改变了还是什么原因导致了这个问题,不过总算先是把这个问题给解决了。
分享到:
相关推荐
总的来说,这个“豆瓣API实践项目”涵盖了Android应用开发的多个方面,包括网络请求、数据解析、UI设计、错误处理以及性能优化。通过这个项目,开发者不仅可以深入理解豆瓣API的使用,还能提升Android开发的综合技能...
在Android开发中,豆瓣API V2是一个常用的接口,用于获取豆瓣平台上的各种数据,如书籍、电影、音乐等。这个接口返回的数据通常是以JSON(JavaScript Object Notation)格式,需要我们进行解析才能在应用程序中使用...
9. **错误处理**:在调用豆瓣API时,可能遇到各种错误,如网络问题、API限制、请求参数错误等,开发者需要对这些情况进行适当的错误处理,以保证应用的稳定性和用户体验。 10. **测试与调试**:在开发过程中,使用...
**Android开发:基于Material Design设计和豆瓣API的App** 在Android应用开发中,Material Design是一种广泛采用的设计语言,它由Google推出,旨在提供统一、直观且富有表现力的用户体验。这个设计规范包括了一系列...
豆瓣API实现客户端源码是一个基于Android平台的项目,旨在帮助开发者了解如何利用豆瓣开放的API来构建一个功能丰富的客户端应用。这个源码实例涵盖了多个关键知识点,包括用户授权、数据获取、界面展示以及搜索功能...
【Android-doubandemoretrofitrxjava豆瓣api练习】是一个针对Android开发者设计的实践项目,旨在通过使用Retrofit和RxJava库与豆瓣API进行交互,实现一个功能丰富的应用程序。这个项目可以帮助开发者深入理解如何在...
本文将深入探讨该项目中的关键知识点,包括Android开发环境的搭建、网络数据的获取与解析、UI设计以及豆瓣API的使用等。 首先,Android开发环境的搭建是基础。开发者需要安装Android Studio,这是Google官方推出的...
本资源是一个Android应用程序的源代码,它利用了ZXing库、Jsoup解析器以及豆瓣API来实现图书的搜索功能。这个应用展示了如何在Android平台上整合不同的技术,为用户提供便捷的图书查询服务。以下是对其中涉及的技术...
本文将深入探讨如何在Android中使用JSON,特别是结合豆瓣API进行数据解析和展示。 首先,理解JSON的基本结构是至关重要的。JSON是一种轻量级、易于人阅读和编写的数据格式,同时也易于机器解析和生成。它基于...
在本项目"Android 豆瓣网 源代码"中,我们将深入探索如何使用Android技术来构建一个与Web2.0服务,特别是豆瓣网,进行交互的移动客户端应用程序。这个源代码实例提供了宝贵的实践经验,涵盖了多种关键的技术点,包括...
9. **数据加载与异步处理**:为了获取豆瓣API的数据,项目中可能会使用到网络请求库,如Retrofit或Volley,以及数据解析工具,如Gson。通过阅读源码,可以学习如何实现数据的异步加载和缓存策略。 10. **错误处理和...
在这个名为"android豆瓣手机客户端源码.zip"的压缩包中,我们获得了豆瓣手机客户端的源代码,这为我们提供了深入理解安卓应用程序开发、特别是豆瓣应用架构和实现机制的宝贵资源。这个源码库主要面向安卓(Android)...
对于mp3播放,你可以创建MediaPlayer对象,然后使用setDataSource()方法设置音频流的URL。接着,调用prepareAsync()进行异步准备,最后start()开始播放。在整个过程中,要监听MediaPlayer的状态变化,例如错误、准备...
豆瓣API允许开发者获取书籍、电影等信息。Android应用通常使用HttpURLConnection或第三方库如Retrofit、Volley来发送网络请求。解析返回的JSON数据,你可以使用Gson或Jackson等库将数据转化为Java对象。在源代码中,...
《深入剖析Android豆瓣手机客户端源码》 在移动开发领域,Android系统占据着主导地位,其开源特性使得开发者能够深入理解并定制应用。本篇文章将围绕"Android 豆瓣手机客户端源码"这一主题,详细解析源码背后的实现...
《深入剖析Android豆瓣手机客户端源码》 在移动开发领域,Android系统因其开源特性而备受开发者喜爱,提供了丰富的API和工具来构建各种复杂的应用。本篇文章将深入探讨“android豆瓣手机客户端源码”这一资源,它是...
5. **JSON解析**:豆瓣网API通常返回JSON格式的数据,开发者需要知道如何使用Gson、Jackson或org.json库来解析和序列化JSON数据,将接收到的网络数据转化为可操作的对象。 6. **用户界面(UI)设计**:良好的用户...
《Android应用源码详解——基于豆瓣网移动客户端》 Android应用源码的分析与学习是提升开发者技能的重要途径,特别是对于像豆瓣网这样的成熟移动应用,其源代码中蕴含了大量的设计模式、架构策略以及最佳实践。这篇...
在本项目中,"基于豆瓣电影API的一个React Native demo"是一个使用React Native框架构建的移动端应用示例,它展示了如何利用JavaScript技术进行混合移动开发。React Native是由Facebook开发的开源库,它允许开发者...