android使用豆瓣API出现500错误及解决方法
16lz
2021-01-26
为团队做一个图书管理的应用,涉及到扫描ISBN然后查询图书信息,本来是通过豆瓣API来查询的,不过昨天却发现突然不能用了,返回的是500错误,internal server error。
代码如下:
这让我感到很奇怪,因为同样的代码在之前还是没问题的。然后在浏览器上进行访问,却又正常。
这是使用HttpGet和HttpClient的方法。
今天换了另一种方法,代码如下:
这回正常了。虽然不知道是不是这段期间豆瓣的API在内部实现上改变了还是什么原因导致了这个问题,不过总算先是把这个问题给解决了。
代码如下:
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在内部实现上改变了还是什么原因导致了这个问题,不过总算先是把这个问题给解决了。
更多相关文章
- Android(安卓)jni代码注册本地方法
- Android(安卓)Studio常见问题——模拟器中关于VT-x is disabled
- Android(安卓)自定义实现switch开关按钮
- Android(安卓)8.1隐藏状态栏图标的实例代码
- android内存泄露优化总结
- android 通知播放系统声音
- Android中ContentProvider的工作过程
- Android(安卓)代码中设置EditText的hint字体大小
- Android(安卓)Studio 构建变体(Build Variant)