为团队做一个图书管理的应用,涉及到扫描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在内部实现上改变了还是什么原因导致了这个问题,不过总算先是把这个问题给解决了。

更多相关文章

  1. Android(安卓)jni代码注册本地方法
  2. Android(安卓)Studio常见问题——模拟器中关于VT-x is disabled
  3. Android(安卓)自定义实现switch开关按钮
  4. Android(安卓)8.1隐藏状态栏图标的实例代码
  5. android内存泄露优化总结
  6. android 通知播放系统声音
  7. Android中ContentProvider的工作过程
  8. Android(安卓)代码中设置EditText的hint字体大小
  9. Android(安卓)Studio 构建变体(Build Variant)

随机推荐

  1. 个人对http请求的理解
  2. Android视频播放框架Vitamio
  3. Android SeekBar的使用,进度条的另一种实
  4. Android 使用LayerDrawable自定制SeekBar
  5. Android上的Native以及JNI开发(1)
  6. 【Android】 基于Socket 的即时通信软件
  7. 使用夜神模拟器进行Android开发调试
  8. Android下Entity封装工具类
  9. Android WebView 调用React Js 代码
  10. Android studio无法修改桌面的图标(已解决