`
貌似掉线
  • 浏览: 260518 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

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

阅读更多
为团队做一个图书管理的应用,涉及到扫描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在内部实现上改变了还是什么原因导致了这个问题,不过总算先是把这个问题给解决了。
0
0
分享到:
评论
5 楼 leokelly001 2014-12-23  
设置请求头,user-agent就行了
4 楼 貌似掉线 2013-04-07  
xiaozhi6156 写道
貌似掉线 写道
xiaozhi6156 写道
把参数用UTF8编码一下

你解决了?
其实一开始的时候用httpclient是没有问题的,后来就变成有问题了,我也不是很明白,因为这之间代码没弄过,想来是豆瓣API的内部实现有改动。

我没写过..猜的

好吧,你赢了,求证明。
3 楼 xiaozhi6156 2013-03-27  
貌似掉线 写道
xiaozhi6156 写道
把参数用UTF8编码一下

你解决了?
其实一开始的时候用httpclient是没有问题的,后来就变成有问题了,我也不是很明白,因为这之间代码没弄过,想来是豆瓣API的内部实现有改动。

我没写过..猜的
2 楼 貌似掉线 2013-03-27  
xiaozhi6156 写道
把参数用UTF8编码一下

你解决了?
其实一开始的时候用httpclient是没有问题的,后来就变成有问题了,我也不是很明白,因为这之间代码没弄过,想来是豆瓣API的内部实现有改动。
1 楼 xiaozhi6156 2013-03-26  
把参数用UTF8编码一下

相关推荐

    豆瓣api实践项目

    总的来说,这个“豆瓣API实践项目”涵盖了Android应用开发的多个方面,包括网络请求、数据解析、UI设计、错误处理以及性能优化。通过这个项目,开发者不仅可以深入理解豆瓣API的使用,还能提升Android开发的综合技能...

    android 豆瓣apiV2解析json并ListView异步加载图片

    在Android开发中,豆瓣API V2是一个常用的接口,用于获取豆瓣平台上的各种数据,如书籍、电影、音乐等。这个接口返回的数据通常是以JSON(JavaScript Object Notation)格式,需要我们进行解析才能在应用程序中使用...

    豆瓣网APi应用

    9. **错误处理**:在调用豆瓣API时,可能遇到各种错误,如网络问题、API限制、请求参数错误等,开发者需要对这些情况进行适当的错误处理,以保证应用的稳定性和用户体验。 10. **测试与调试**:在开发过程中,使用...

    Android-基于MaterialDesign设计和豆瓣API的app

    **Android开发:基于Material Design设计和豆瓣API的App** 在Android应用开发中,Material Design是一种广泛采用的设计语言,它由Google推出,旨在提供统一、直观且富有表现力的用户体验。这个设计规范包括了一系列...

    豆瓣API实现客户端源码

    豆瓣API实现客户端源码是一个基于Android平台的项目,旨在帮助开发者了解如何利用豆瓣开放的API来构建一个功能丰富的客户端应用。这个源码实例涵盖了多个关键知识点,包括用户授权、数据获取、界面展示以及搜索功能...

    Android-doubandemoretrofitrxjava豆瓣api练习

    【Android-doubandemoretrofitrxjava豆瓣api练习】是一个针对Android开发者设计的实践项目,旨在通过使用Retrofit和RxJava库与豆瓣API进行交互,实现一个功能丰富的应用程序。这个项目可以帮助开发者深入理解如何在...

    android豆瓣客户端源代码

    本文将深入探讨该项目中的关键知识点,包括Android开发环境的搭建、网络数据的获取与解析、UI设计以及豆瓣API的使用等。 首先,Android开发环境的搭建是基础。开发者需要安装Android Studio,这是Google官方推出的...

    android利用ZXing Jsoup 和豆瓣API做出的图书搜索.zip源码资源下载

    本资源是一个Android应用程序的源代码,它利用了ZXing库、Jsoup解析器以及豆瓣API来实现图书的搜索功能。这个应用展示了如何在Android平台上整合不同的技术,为用户提供便捷的图书查询服务。以下是对其中涉及的技术...

    android使用json豆瓣源代码

    本文将深入探讨如何在Android中使用JSON,特别是结合豆瓣API进行数据解析和展示。 首先,理解JSON的基本结构是至关重要的。JSON是一种轻量级、易于人阅读和编写的数据格式,同时也易于机器解析和生成。它基于...

    Android 豆瓣网 源代码

    在本项目"Android 豆瓣网 源代码"中,我们将深入探索如何使用Android技术来构建一个与Web2.0服务,特别是豆瓣网,进行交互的移动客户端应用程序。这个源代码实例提供了宝贵的实践经验,涵盖了多种关键的技术点,包括...

    Android项目源码开源的MaterialDesign豆瓣客户端

    9. **数据加载与异步处理**:为了获取豆瓣API的数据,项目中可能会使用到网络请求库,如Retrofit或Volley,以及数据解析工具,如Gson。通过阅读源码,可以学习如何实现数据的异步加载和缓存策略。 10. **错误处理和...

    android豆瓣手机客户端源码.zip

    在这个名为"android豆瓣手机客户端源码.zip"的压缩包中,我们获得了豆瓣手机客户端的源代码,这为我们提供了深入理解安卓应用程序开发、特别是豆瓣应用架构和实现机制的宝贵资源。这个源码库主要面向安卓(Android)...

    原创 Android 音乐播放器(豆瓣第三方客户端)

    对于mp3播放,你可以创建MediaPlayer对象,然后使用setDataSource()方法设置音频流的URL。接着,调用prepareAsync()进行异步准备,最后start()开始播放。在整个过程中,要监听MediaPlayer的状态变化,例如错误、准备...

    Android豆瓣网移动客户端+讲解+源代码

    豆瓣API允许开发者获取书籍、电影等信息。Android应用通常使用HttpURLConnection或第三方库如Retrofit、Volley来发送网络请求。解析返回的JSON数据,你可以使用Gson或Jackson等库将数据转化为Java对象。在源代码中,...

    Android 豆瓣手机客户端源码.zip

    《深入剖析Android豆瓣手机客户端源码》 在移动开发领域,Android系统占据着主导地位,其开源特性使得开发者能够深入理解并定制应用。本篇文章将围绕"Android 豆瓣手机客户端源码"这一主题,详细解析源码背后的实现...

    android豆瓣手机客户端源码.rar

    《深入剖析Android豆瓣手机客户端源码》 在移动开发领域,Android系统因其开源特性而备受开发者喜爱,提供了丰富的API和工具来构建各种复杂的应用。本篇文章将深入探讨“android豆瓣手机客户端源码”这一资源,它是...

    基于Android的豆瓣网(Web2.0)移动客户端开发.rar

    5. **JSON解析**:豆瓣网API通常返回JSON格式的数据,开发者需要知道如何使用Gson、Jackson或org.json库来解析和序列化JSON数据,将接收到的网络数据转化为可操作的对象。 6. **用户界面(UI)设计**:良好的用户...

    Android应用源码之Android经典开发-豆瓣网移动客户端+讲解+源代码.zip

    《Android应用源码详解——基于豆瓣网移动客户端》 Android应用源码的分析与学习是提升开发者技能的重要途径,特别是对于像豆瓣网这样的成熟移动应用,其源代码中蕴含了大量的设计模式、架构策略以及最佳实践。这篇...

    基于豆瓣电影api的一个reactnativedemo

    在本项目中,"基于豆瓣电影API的一个React Native demo"是一个使用React Native框架构建的移动端应用示例,它展示了如何利用JavaScript技术进行混合移动开发。React Native是由Facebook开发的开源库,它允许开发者...

Global site tag (gtag.js) - Google Analytics