Http Get using Android HttpURLConnection Http Get using Android HttpURLConnection java java

Http Get using Android HttpURLConnection


Try getting the input stream from this you can then get the text data as so:-

    URL url;    HttpURLConnection urlConnection = null;    try {        url = new URL("http://www.mysite.se/index.asp?data=99");        urlConnection = (HttpURLConnection) url                .openConnection();        InputStream in = urlConnection.getInputStream();        InputStreamReader isw = new InputStreamReader(in);        int data = isw.read();        while (data != -1) {            char current = (char) data;            data = isw.read();            System.out.print(current);        }    } catch (Exception e) {        e.printStackTrace();    } finally {        if (urlConnection != null) {            urlConnection.disconnect();        }        }

You can probably use other inputstream readers such as buffered reader also.

The problem is that when you open the connection - it does not 'pull' any data.


Here is a complete AsyncTask class

public class GetMethodDemo extends AsyncTask<String , Void ,String> {    String server_response;    @Override    protected String doInBackground(String... strings) {        URL url;        HttpURLConnection urlConnection = null;        try {            url = new URL(strings[0]);            urlConnection = (HttpURLConnection) url.openConnection();            int responseCode = urlConnection.getResponseCode();            if(responseCode == HttpURLConnection.HTTP_OK){                server_response = readStream(urlConnection.getInputStream());                Log.v("CatalogClient", server_response);            }        } catch (MalformedURLException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }        return null;    }    @Override    protected void onPostExecute(String s) {        super.onPostExecute(s);        Log.e("Response", "" + server_response);    }}// Converting InputStream to Stringprivate String readStream(InputStream in) {        BufferedReader reader = null;        StringBuffer response = new StringBuffer();        try {            reader = new BufferedReader(new InputStreamReader(in));            String line = "";            while ((line = reader.readLine()) != null) {                response.append(line);            }        } catch (IOException e) {            e.printStackTrace();        } finally {            if (reader != null) {                try {                    reader.close();                } catch (IOException e) {                    e.printStackTrace();                }            }        }        return response.toString();    }

To Call this AsyncTask class

new GetMethodDemo().execute("your web-service url");


I have created with callBack(delegate) response to Activity class.

public class WebService extends AsyncTask<String, Void, String> {    private Context mContext;    private OnTaskDoneListener onTaskDoneListener;    private String urlStr = "";    public WebService(Context context, String url, OnTaskDoneListener onTaskDoneListener) {        this.mContext = context;        this.urlStr = url;        this.onTaskDoneListener = onTaskDoneListener;    }    @Override    protected String doInBackground(String... params) {        try {            URL mUrl = new URL(urlStr);            HttpURLConnection httpConnection = (HttpURLConnection) mUrl.openConnection();            httpConnection.setRequestMethod("GET");            httpConnection.setRequestProperty("Content-length", "0");            httpConnection.setUseCaches(false);            httpConnection.setAllowUserInteraction(false);            httpConnection.setConnectTimeout(100000);            httpConnection.setReadTimeout(100000);            httpConnection.connect();            int responseCode = httpConnection.getResponseCode();            if (responseCode == HttpURLConnection.HTTP_OK) {                BufferedReader br = new BufferedReader(new InputStreamReader(httpConnection.getInputStream()));                StringBuilder sb = new StringBuilder();                String line;                while ((line = br.readLine()) != null) {                    sb.append(line + "\n");                }                br.close();                return sb.toString();            }        } catch (IOException e) {            e.printStackTrace();        } catch (Exception ex) {            ex.printStackTrace();        }        return null;    }    @Override    protected void onPostExecute(String s) {        super.onPostExecute(s);        if (onTaskDoneListener != null && s != null) {            onTaskDoneListener.onTaskDone(s);        } else            onTaskDoneListener.onError();    }}

where

public interface OnTaskDoneListener {    void onTaskDone(String responseData);    void onError();}

You can modify according to your needs. It's for get