多个http请求Android

时间:2015-11-11 18:59:34

标签: android http android-asynctask

在同步期间,我必须清除在线流,然后使用HTTP请求逐行加载所有数据。每条数据线一个请求。重要的是,http请求按照它们的创建顺序运行。

主要课程:

       //Sync cloud stream
            HttpAsyncTask hats = new HttpAsyncTask();
            hats.execute(app.getProductCartStream().getClearUri());

            for(int i = 0 ; i<app.getProductCartData().size();i++){
                ArrayList<String> values = new ArrayList<String>();
                values.add(app.getProductCartData().get(i));
                String insertUri = app.getProductCartStream().getInsertUri(values);
                HttpAsyncTask hat = new HttpAsyncTask();
                hat.execute(insertUri);
            }

私人课程:

private class HttpAsyncTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls) {
    try{
        DefaultHttpClient httpClient = new DefaultHttpClient();
        HttpGet httpGet = new HttpGet(urls[0]);
        HttpResponse httpResponse = httpClient.execute(httpGet);
        BufferedReader reader = new BufferedReader(new InputStreamReader(httpResponse.getEntity().getContent(), "UTF-8"));
        StringBuilder builder = new StringBuilder();
        for (String line = null; (line = reader.readLine()) != null; ) {
            builder.append(line).append("\n");
        }
        return builder.toString();
    }catch (Exception e) {
        Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_SHORT).show();;
    }
    return null;
}

@Override
protected void onPostExecute(String result) {
    if(result!=null){
        Toast.makeText(getApplicationContext(), "Saved", Toast.LENGTH_LONG).show();
    }
    else{
        Toast.makeText(getApplicationContext(), "Not able to save data", Toast.LENGTH_LONG).show();
    }

}

}

问题1:请求是否按创建顺序执行?即,第一个http请求首先清除流是非常重要的。

问题2:我弃用的所有HTTP内容。现在这样做的正确方法是什么?

问题3:为什么我不能在application.onDestroy()中激活同步代码?

1 个答案:

答案 0 :(得分:1)

Ans.1: - 在新的AsyncTask()。execute()中,所有请求都按顺序处理。对于并行执行,我们调用另一种方法。

Ans.2:我弃用的HTTP内容,比如DefaultHttpClient,即使在Android M中它们也不存在,因此避免使用它们并使用更好的方法:

HttpURLConnection connection = (HttpURLConnection)url.openConnection();

...... bla bla bla。

但是,赘肉并不代表你的方法不起作用。

答案3:我无法回答您的问题。

由于