Вопрос:
Я получаю ошибку результата преобразования ошибки java.io.IOException Attempted read on closed stream чем проблема?
Мой класс JSONParsing выглядит следующим образом:
public class JSONParser { static InputStream is = null; static JSONObject jObj = null; static String json = «»; // constructor public JSONParser() { } // function get json from url // by making HTTP POST or GET method public static JSONObject makeHttpRequest(String url, String method, List<NameValuePair> params) { // Making HTTP request try { // check for request method if(method.equals(«POST»)){ // request method is POST // defaultHttpClient DefaultHttpClient httpClient = new DefaultHttpClient(); String url1 = «http://192.168.0.29/evisiting_records/read_mytask.php?cid=1»; HttpPost httpPost = new HttpPost(url1); httpPost.setEntity(new UrlEncodedFormEntity(params)); HttpResponse httpResponse = httpClient.execute(httpPost); HttpEntity httpEntity = httpResponse.getEntity(); is = httpEntity.getContent(); }else if(method.equals(«GET»)){ // request method is GET DefaultHttpClient httpClient = new DefaultHttpClient(); String paramString = URLEncodedUtils.format(params, «utf-8»); url += «?» + paramString; HttpGet httpGet = new HttpGet(url); HttpResponse httpResponse = httpClient.execute(httpGet); HttpEntity httpEntity = httpResponse.getEntity(); is = httpEntity.getContent(); } } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } try { BufferedReader reader = new BufferedReader(new InputStreamReader( is, «iso-8859-1»), 8); StringBuilder sb = new StringBuilder(); String line = null; while ((line = reader.readLine()) != null) { sb.append(line + «n»); } is.close(); json = sb.toString(); Log.v(«json from server ::»,json); } catch (Exception e) { Log.e(«Buffer Error», «Error converting result » + e.toString()); } // try parse the string to a JSON object try { jObj = new JSONObject(json); } catch (JSONException e) { Log.e(«JSON Parser», «Error parsing data » + e.toString()); } // return JSON String return jObj; } }
Незлое руководство. как его решить?
Ответ №1
Ошибка сообщает вам, что responseStream уже вызвал.close(). Вы ранее использовали responseStream в своем коде или обернули его любыми другими потоками, на которых был вызван.close()?