Java – How do I add AsyncTask in HttpURLConnection?

How do I add AsyncTask in HttpURLConnection?… here is a solution to the problem.

How do I add AsyncTask in HttpURLConnection?

I’m setting up a server connection and my problem is that I need to put an AsyncTask on my code because it doesn’t work on sdk version 10. I don’t want to use StrictMode.ThreadPolicy.

public class TestConnection extends Activity {

@Override
public void onCreate(Bundle cbundle) {
    super.onCreate(cbundle);

ConnectivityManager aConnectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo aNetworkInfo = aConnectivityManager.getActiveNetworkInfo();
    if (aNetworkInfo != null && aNetworkInfo.isConnected()){
        Toast.makeText(this, "Internet Connected", Toast.LENGTH_LONG).show();
    }else{
        Toast.makeText(this, "Internet Connection Timeout", Toast.LENGTH_LONG).show();
    }

URL aURL;
    /* Will be filled and displayed later. */
    String aString = null;

/* We will show the data we read in a TextView. */
    TextView aTextView = new TextView(this);
    try {

/* Define the URL we want to load data from. */
        aURL = new URL(
                "http://url");

/* 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 (Exception aException) {

/* On any Error we want to display it. */
        aString = aException.getMessage();
    }

/* Show the String on the GUI. */
    aTextView.setText(aString);
    this.setContentView(aTextView);

}

}

Solution

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);

Related Problems and Solutions