How to add AsyncTask in an HttpURLConnection?

后端 未结 3 1479
我寻月下人不归
我寻月下人不归 2020-12-11 09:08

I\'m establishing a server connection, my problem is that I need to put an AsyncTask on my code, because its not working in sdk version 10 up. I do

相关标签:
3条回答
  • 2020-12-11 09:43

    In oncreate() u can use like this::

    @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            StrictMode.ThreadPolicy policy = new       
                          StrictMode.ThreadPolicy.Builder().permitAll().build();
            StrictMode.setThreadPolicy(policy);
                  new MyAsynTask().execute(null, null, null);
          }
    

    Then in AsynTask do as well::

    class MyAsynTask extends AsyncTask<Long, Integer, Integer> {
    
            @Override
            protected void onPreExecute() {
                super.onPreExecute();
            }
    
            @Override
            protected <Type> doInBackground(Long... params) {
                URL ur_url = newURL(http://....) 
                       // do the works on url.....
                return <tuped>result;
            }
    
            @Override
            protected void onPostExecute(Integer result) {
                // set the results in Ui
    
            }
        }
    
    0 讨论(0)
  • 2020-12-11 09:59

    Refer below code

    new FetchRSSFeeds().execute();
    
    
    private class FetchRSSFeeds extends AsyncTask<String, Void, Boolean> {
    
        private ProgressDialog dialog = new ProgressDialog(HomeActivity.this);
    
        /** progress dialog to show user that the backup is processing. */
        /** application context. */
    
        protected void onPreExecute() {
            this.dialog.setMessage(getResources().getString(
                    R.string.Loading_String));
            this.dialog.show();
        }
    
        protected Boolean doInBackground(final String... args) {
            try {
    
                /**
                 * Write your URL connection code and fetch data here
                 */
    
                return true;
            } catch (Exception e) {
                Log.e("tag", "error", e);
                return false;
            }
        }
    
        @Override
        protected void onPostExecute(final Boolean success) {
    
            if (dialog.isShowing()) {
                dialog.dismiss();
            }
    
                 /* Show the String on the GUI. */
                        aTextView.setText(aString);
                        this.setContentView(aTextView);
    
        }
    }
    
    0 讨论(0)
  • 2020-12-11 10:05
    private class ConnectionTask extends AsyncTask<String, Void, String>{
        @Override
        protected byte[] doInBackground(String... urls) {
                try {
        aURL = new URL(
                urls[0]);
    
        /* Open a connection to that URL. */
        final HttpURLConnection aHttpURLConnection = (HttpURLConnection) aURL.openConnection();
    
        /* Define InputStreams to read from the URLConnection. */
        InputStream aInputStream = aHttpURLConnection.getInputStream();
        BufferedInputStream aBufferedInputStream = new BufferedInputStream(
                aInputStream);
    
        /* Read bytes to the Buffer until there is nothing more to read(-1) */
        ByteArrayBuffer aByteArrayBuffer = new ByteArrayBuffer(50);
        int current = 0;
        while ((current = aBufferedInputStream.read()) != -1) {
            aByteArrayBuffer.append((byte) current);
        }
    
    
        /* Convert the Bytes read to a String. */
        aString = new String(aByteArrayBuffer.toByteArray());               } catch (IOException e) {
                    Log.d(TAG, e.toString());
                }
            return aString;
        }
    
        @Override
        protected void onPostExecute(String result) {
                   // result is what you got from your connection
    aTextView.setText(result);
    
        }
    
    }
    

    How to call it:

                            ConnectionTask task = new ConnectionTask();
                            String[] params = new String[2];
                            params[0] = url;
                            params[1] = somethingelseifneeded;
                            task.execute(params);
    
    0 讨论(0)
提交回复
热议问题