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