AsyncTask Loader Http POST / GET

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AsyncTask Loader Http POST / GET相关的知识,希望对你有一定的参考价值。

我已经意识到,对于配置更改,AsyncTaskLoader效果更好。但是,这个请求是否也适用于POST方法。

到目前为止我看到的所有请求只显示GET请求。示例代码将帮助我了解如何使用POSTHttpUrlConnection发送参数并生成AsyncTaskLoader请求。

答案

请参阅以下AsyncTaskLoader链接。 AsyncTaskLoader basic example. (Android)

您可以使用AsyncTask。请查看以下参考代码。

private class LongOperation extends AsyncTask<String, Void, String> {

            @Override
            protected String doInBackground(String... params) {

URL url = new URL("http://url.com");
                HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
                conn.setReadTimeout(10000);
                conn.setConnectTimeout(15000);
                conn.setRequestMethod("POST");
                conn.setDoInput(true);
                conn.setDoOutput(true);

                List<NameValuePair> params = new ArrayList<NameValuePair>();
                params.add(new BasicNameValuePair("param1", paramValue1));
                params.add(new BasicNameValuePair("param2", paramValue2));
                params.add(new BasicNameValuePair("param3", paramValue3));

                OutputStream os = conn.getOutputStream();
                BufferedWriter writer = new BufferedWriter(
        new OutputStreamWriter(os, "UTF-8"));
                writer.write(getQuery(params));
                writer.flush();
                writer.close();
                os.close();

                conn.connect();
            }

    private String getQuery(List<NameValuePair> params) throws UnsupportedEncodingException
    {
        StringBuilder result = new StringBuilder();
        boolean first = true;

        for (NameValuePair pair : params)
        {
            if (first)
                first = false;
            else
                result.append("&");

            result.append(URLEncoder.encode(pair.getName(), "UTF-8"));
            result.append("=");
            result.append(URLEncoder.encode(pair.getValue(), "UTF-8"));
        }

        return result.toString();
    }

            @Override
            protected void onPostExecute(String result) {
               if(!TextUtils.isEmpty(result)){
                   // Do your work
               }
            }

            @Override
            protected void onPreExecute() {}

            @Override
            protected void onProgressUpdate(Void... values) {}
        }

以上是关于AsyncTask Loader Http POST / GET的主要内容,如果未能解决你的问题,请参考以下文章

Asynctask vs 线程 vs 服务 vs 加载器

教你写Http框架——三个样例带你深入理解AsyncTask

你真的了解AsyncTask吗?AsyncTask源码分析

你真的了解AsyncTask吗?AsyncTask源码分析

android 异步任务AsyncTask

异步任务-AsyncTask