当前位置: 代码迷 >> Android >> android使用豆瓣API出现500异常及解决办法
  详细解决方案

android使用豆瓣API出现500异常及解决办法

热度:20   发布时间:2016-05-01 12:02:43.0
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在内部实现上改变了还是什么原因导致了这个问题,不过总算先是把这个问题给解决了。
  相关解决方案