在Android下,使用HTTPclient模拟get请求时,服务器返回500错误。但是,如果不是Android环境则没有问题,很诡异。

调了一下午,发现需要给httpget设置User-Agent。豆瓣你为何如此坑爹。

代码很简单:

public static String getBookJson(String isbn) {HttpClient client = new DefaultHttpClient();HttpGet httpGet = null;HttpResponse response = null;String resultJson = null;try {httpGet = new HttpGet(baseUrl + isbn);httpGet.setHeader("Host", "api.douban.com");httpGet.setHeader("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36");response = client.execute(httpGet);int code = response.getStatusLine().getStatusCode();if (code == 200) {resultJson = EntityUtils.toString(response.getEntity(), "utf-8");Log.e("MainActivity", resultJson);return resultJson;}} catch (ClientProtocolException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return "";}

就是这么简单的代码,你必须设置User-Agent,或者不使用HTTPclient,使用UrlConnecttion也可以。


参考:http://www.douban.com/group/topic/35873259/

更多相关文章

  1. 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
  2. Android(安卓)Audio代码分析15 - testPlaybackHeadPositionAfter
  3. Android学习之RecyclerView
  4. Android(安卓)Program type already present: XXXX
  5. Andorid利用sserver/runtime实现java执行linux程序或脚本
  6. Android项目打包遇com.android.builder.internal.aapt.v2.Aapt2E
  7. Android(安卓)创建fragment时向fragment中传数据
  8. Android完美解决多次点击Toast一直提示不消失问题
  9. Android(安卓)CI - Jenkins

随机推荐

  1. Android(安卓)消息通知栏用法详解(一)
  2. Android Animation(chapter1 目录)
  3. Android(安卓)网络连通状态监测
  4. 自定义Android菜单背景
  5. android 启动Activity的四种模式
  6. Android点赞动画效果 ,点赞后加一,2种方法,
  7. Android Camera HAL设计初步
  8. Eclipse调试Android出现Debug certificat
  9. Android之添加快捷方式(Shortcut)到手机
  10. Android(安卓)Makefile and build system