使用HTTPclient访问豆瓣API问题
16lz
2021-01-25
在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/
更多相关文章
- 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
- Android(安卓)Audio代码分析15 - testPlaybackHeadPositionAfter
- Android学习之RecyclerView
- Android(安卓)Program type already present: XXXX
- Andorid利用sserver/runtime实现java执行linux程序或脚本
- Android项目打包遇com.android.builder.internal.aapt.v2.Aapt2E
- Android(安卓)创建fragment时向fragment中传数据
- Android完美解决多次点击Toast一直提示不消失问题
- Android(安卓)CI - Jenkins