Android Async Http Получить запрос

Я пытаюсь реализовать класс httpClient, который является AsyncTask (иначе я получаю исключение из-за наличия связи в моем основном потоке). Я пробовал что-то вроде этого:

private class execHttpAsync extends AsyncTask <String, String, HttpResponse> { public String resultString; @Override protected HttpResponse doInBackground(String... params) { String url = params[0]; HttpClient httpClient = new DefaultHttpClient(); HttpGet request = new HttpGet(url); request.setHeader("Content-Type", "text/xml"); HttpResponse response; try { response = httpClient.execute(request); } catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return response; } @Override protected void onPostExecute(HttpResponse result) { StringBuffer returned = new StringBuffer(); InputStream content = result.getEntity().getContent(); BufferedReader rd = new BufferedReader(new InputStreamReader(content, "UTF-8")); String line; while ((line = rd.readLine()) != null) { String endOfLine = ""; returned.append(line + endOfLine); } content.close(); String retVal = returned.toString(); try { String header = retVal.substring(0, 1); if (!header.equals("<")) { retVal = retVal.replace(header, ""); } } catch (Exception e) { // TODO: handle exception } resultString = returned.toString(); } } 

Но мне нужно получить ответ в конце. Я попытался создать экземпляр этого класса, а затем получить ответ в качестве участника, но это не сработало. Какие-либо предложения ?

Попробуйте этот путь

 private class DownloadWebPageTask extends AsyncTask<String, Void, String> { @Override protected String doInBackground(String... urls) { String response = ""; for (String url : urls) { DefaultHttpClient client = new DefaultHttpClient(); HttpGet httpGet = new HttpGet(url); try { HttpResponse execute = client.execute(httpGet); InputStream content = execute.getEntity().getContent(); BufferedReader buffer = new BufferedReader(new InputStreamReader(content)); String s = ""; while ((s = buffer.readLine()) != null) { response += s; } } catch (Exception e) { e.printStackTrace(); } } return response; } @Override protected void onPostExecute(String result) { textView.setText(result); } } 

Это асинхронная операция, поэтому что-то вроде:

 myRetValue = new myAsyncTask.execute(); 

НЕ присваивает возвращаемое значение из onPostExecute() в myRetValue. Ваш

 resultString = returned.toString(); 

Должен привести к тому, что все returned.toString() resultString returned.toString() созданное назначено переменной resultString (которое, как я полагаю, объявлено вне вашего класса AsyncTask, поэтому в основном ваш код выглядит с первого взгляда. Вы можете просто не иметь ничего в returned . Попробуйте установить некоторые точки останова в Ваш код AsyncTask и проверьте, действительно ли он ведет себя так, как вы думаете.

Intereting Posts