AsyncTask Loader Http POST / GET

问题描述 投票:0回答:1

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

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

android rest android-asynctask httpurlconnection asynctaskloader
1个回答
0
投票

请参阅以下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) {}
        }
© www.soinside.com 2019 - 2024. All rights reserved.