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在内部实现上改变了还是什么原因导致了这个问题,不过总算先是把这个问题给解决了。

PS:source from http://maosidiaoxian.iteye.com/blog/1767763

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值