Как использовать асинхронную задачу для манипулирования httppost android - PullRequest
0 голосов
/ 27 марта 2012

Я новичок в асинхронной задаче.Мне нужно использовать httppost в моем приложении.Пожалуйста, помогите мне манипулировать следующим кодом с помощью асинхронной задачи.Пожалуйста, дайте мне структурированный код

                HttpClient httpClient = new DefaultHttpClient();
                HttpPost httpPost = new HttpPost("url here");
                httpPost.addHeader("Content-Type", "application/xml");
                try {
                    HttpResponse response = httpClient.execute(httpPost);
                    BufferedReader reader = new BufferedReader(
                            new InputStreamReader(response.getEntity()
                                    .getContent(), "UTF-8"));
                    StringBuffer responseString = new StringBuffer("");
                    String line;
                    while ((line = reader.readLine()) != null) {
                        responseString.append(line);
                    }
                    System.out.println("respose QQQQQQQQQQQ");
                    System.out.println("11response "
                            + responseString.toString());

                } catch (ClientProtocolException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

Ответы [ 2 ]

0 голосов
/ 27 марта 2012

смотри это http://developer.android.com/reference/android/os/AsyncTask.html. В методе doInBackground () напишите свой код для манипулирования пользовательским интерфейсом HTTP Post.In preexecute () перед запуском потока и в пользовательском интерфейсе onPostExecute () после завершения потока.код в doinBackground ().

вызовите поток AsynTask следующим образом

ServerCalling  task = new ServerCalling();
            task.execute(new String[] { "Tickets" });

Класс SerivceCalling:

public  class ServerCalling extends  AsyncTask<String, Void, Void> {
              @Override
        protected void onPreExecute() {

        }

/**
         * On progress update.
         * 
         * @param unused
         *            the unused
         */
        protected void onProgressUpdate(Void unused) {
            L

og.d("HIIIIIIIIIIIIIIIIIIIIIIII","ONPROGRESS UPDATE IS CALLED ........................");
        }

             @Override
        protected void onPostExecute(Void unused) {
}

    @Override
        protected Void doInBackground(String... params) {
      HttpClient httpClient = new DefaultHttpClient();
                HttpPost httpPost = new HttpPost("url here");
                httpPost.addHeader("Content-Type", "application/xml");
                try {
                    HttpResponse response = httpClient.execute(httpPost);
                    BufferedReader reader = new BufferedReader(
                            new InputStreamReader(response.getEntity()
                                    .getContent(), "UTF-8"));
                    StringBuffer responseString = new StringBuffer("");
                    String line;
                    while ((line = reader.readLine()) != null) {
                        responseString.append(line);
                    }
                    System.out.println("respose QQQQQQQQQQQ");
                    System.out.println("11response "
                            + responseString.toString());

                } catch (ClientProtocolException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

}
0 голосов
/ 27 марта 2012

используйте этот код

private class VerticalChannelTask extends AsyncTask<String, Void, ArrayList<MyChannelItem>> {       

    @Override
    protected void onPreExecute() { 
        super.onPreExecute();   
        show();
    }

    @Override
    protected ArrayList<MyChannelItem> doInBackground(String...params) { 
    /// place your code here i.e Http code..

        return m_orders;
    }       
    protected void onPostExecute(ArrayList<MyChannelItem> result) { 

        hide();         

    }
}

здесь я использую входной параметр String, а возвращаемые значения из Asynctask были ArrayList.изменить в зависимости от ваших требований

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...