`
貌似掉线
  • 浏览: 256585 次
  • 性别: 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编码一下

相关推荐

    Android代码-FastLib

    Demo中使用到的网络请求api来源于豆瓣API V2 版权及最终解释权归d豆瓣所有,如有侵权请联系删除! 主要功能 基于Retrofit2.x及RxJava2.x的网络请求封装、网络请求与生命周期绑定、快速观察者、快速loading观察者、...

    android开发入门与实战(下)

    第14章 Android综合案例三——基于Android的豆瓣网(Web2.0)移动客户端开发 14.1 关于豆瓣网和豆瓣网API 14.1.1 豆瓣网介绍 14.1.2 豆瓣网API介绍 14.1.3 豆瓣网API认证 14.1.4 豆瓣网API快速入门 14.1.5 豆瓣网API...

    《Google Android开发入门与实战》.pdf

    从技术实现上,讲解了5个android平台下的完整综合实例及源代码分析,分别是rss阅读器、基于google map的个人gps、豆瓣网(web 2.0)客户端、在线音乐播放器、手机信息查看助手。本书注重对实际动手能力的指导,在遵循...

    android开发入门与实战(上)

    第14章 Android综合案例三——基于Android的豆瓣网(Web2.0)移动客户端开发 14.1 关于豆瓣网和豆瓣网API 14.1.1 豆瓣网介绍 14.1.2 豆瓣网API介绍 14.1.3 豆瓣网API认证 14.1.4 豆瓣网API快速入门 14.1.5 豆瓣网API...

    Google.Android开发入门与实战

    从技术实现上,讲解了5个Android平台下的完整综合实例及源代码分析,分别是RSS阅读器、基于Google Map的个人GPS、豆瓣网(Web 2.0)客户端、在线音乐播放器、手机信息查看助手。《Android开发入门与实战》注重对实际...

    Android项目一款基于 Material Design 的图书展示类 app.zip

    搜索框在低版本api出现的ui错误 v1.3 电子书模块 电子书列表 电子书分类 电子书列表性别筛选 v1.2 扫码搜书 扫二维码查看网页 书架列表排序(仅UI) 发现页面 v1.1 图书搜索 图书分类 v1.0 图书浏览 ...

    Android代码-知乎豆瓣网易云综合体

    模仿网易云音乐UI,用知乎和gankio 网易新闻 豆瓣电影的API来完成一个基于Material Design Rxjava Retrofit dagger2 MVP构架的项目 为了更好的学习Material Design和主流框架,于是有了该项目。 Screenshots ...

    Google Android开发入门与实战的代码

    第14章 Android综合案例三——基于Android的豆瓣网(Web 2.0)移动客户端开发 260 14.1 关于豆瓣网和豆瓣网API 260 14.1.1 豆瓣网介绍 260 14.1.2 豆瓣网API介绍 261 14.1.3 豆瓣网API认证 261 14.1.4...

    Android代码-图书展示类App

    搜索框在低版本api出现的ui错误 v1.3 电子书模块 电子书列表 电子书分类 电子书列表性别筛选 v1.2 扫码搜书 扫二维码查看网页 书架列表排序(仅UI) 发现页面 v1.1 图书搜索 图书分类 v1.0 图书浏览 夜间模式 ...

    MaterialHome-master:android 一款图书展示类 app

    搜索框在低版本api出现的ui错误 v1.3 电子书模块 电子书列表 电子书分类 电子书列表性别筛选 v1.2 扫码搜书 扫二维码查看网页 书架列表排序(仅UI) 发现页面 v1.1 图书搜索 图书分类 v1.0 图书浏览 夜间模式 我的书架...

    java开源包8

    使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...

    java开源包1

    使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...

    java开源包11

    使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...

    java开源包2

    使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...

    java开源包3

    使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...

    java开源包6

    使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...

    java开源包5

    使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...

    java开源包10

    使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...

    java开源包4

    使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...

    java开源包7

    使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...

Global site tag (gtag.js) - Google Analytics