原因是,你只能消耗
Content的
Entity一次。
您在这里做了两次(可能不知道)
Reader reader = new InputStreamReader(response.getEntity().getContent());
和这里
response.getEntity().writeTo(out);
我知道这听起来有些怪异,但实际上writeTo()函数将从实体获取内容并将其写入
OutputStream。您可以在此处的文档中看到它
您可以使用的另一种解决方法是将其转换为字符串,然后让GSON处理
@Overrideprotected String doInBackground(String... uri) { HttpClient httpclient = new DefaultHttpClient(); HttpResponse response; String responseString = null; try { response = httpclient.execute(new HttpGet(uri[0])); StatusLine statusLine = response.getStatusLine(); if(statusLine.getStatusCode() == HttpStatus.SC_OK){ responseString = EntityUtils.toString(response.getEntity()); // content will be consume only once Gson gson = new Gson(); Holder response1 = gson.fromJson(responseString, Holder.class); } else{ //Closes the connection. response.getEntity().getContent().close(); throw new IOException(statusLine.getReasonPhrase()); } } catch (ClientProtocolException e) { //TODO Handle problems.. progressDialog.hide(); } catch (IOException e) { //TODO Handle problems.. progressDialog.hide(); } return responseString;}希望我的回答能对您有所帮助!



