Download this project here : HttpURLConnection with JSONParsing
Most Network - Connected Android apps use HTTP to send and receive data.
The Android platform includes the HttpURLConnection client.
Before performing network related operations we need to check whether device is connected to network or not and then proceed to perform network operations.
Most Network - Connected Android apps use HTTP to send and receive data.
The Android platform includes the HttpURLConnection client.
Before performing network related operations we need to check whether device is connected to network or not and then proceed to perform network operations.
Screenshot of the output:
AndroidManifest.xml:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.ramsandroid.httpurlconnection">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
activity_main.xml:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"> <ScrollView android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/textview" android:layout_width="match_parent" android:layout_height="match_parent" android:textSize="20sp"/> </ScrollView> </RelativeLayout> MainActivity.java:package com.ramsandroid.httpurlconnection; import android.app.AlertDialog; import android.app.ProgressDialog; import android.content.Context; import android.content.DialogInterface; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.os.AsyncTask; import android.os.StrictMode; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.TextView; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; public class MainActivity extends AppCompatActivity { TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = (TextView) findViewById(R.id.textview); ConnectivityManager connMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo networkInfo = connMgr.getActiveNetworkInfo(); if (networkInfo != null && networkInfo.isConnected()) { MyAsync myAsync = new MyAsync(); myAsync.execute(); } else { AlertDialog.Builder builder = new AlertDialog. Builder(MainActivity.this); builder.setTitle("Alert!"); builder.setMessage("Please check your network connection"); builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { finish(); } }); builder.create().show(); } } class MyAsync extends AsyncTask<Void, Void, String> { ProgressDialog progressDialog; @Override protected void onPreExecute() { super.onPreExecute(); progressDialog = ProgressDialog.show(MainActivity.this, "downloading", "please wait"); } @Override protected String doInBackground(Void... voids) { String result = null; try { URL url = new URL("http://api.androidhive.info/contacts/"); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); InputStream in = new BufferedInputStream(urlConnection.getInputStream()); result = inputStreamToString(in); } catch (Exception e) { e.printStackTrace(); } return result; } @Override protected void onPostExecute(String s) { super.onPostExecute(s); progressDialog.dismiss(); try { JSONObject jsonObject = new JSONObject(s); JSONArray jsonArray = jsonObject.getJSONArray("contacts"); for (int i = 0; i < jsonArray.length(); i++) { String id = jsonArray.getJSONObject(i).getString("id"); String name = jsonArray.getJSONObject(i).getString("name"); String email = jsonArray.getJSONObject(i).getString("email"); String mobile = jsonArray.getJSONObject(i).getJSONObject("phone").getString("mobile"); textView.append(id + "\n"); textView.append(name + "\n"); textView.append(email + "\n"); textView.append(mobile + "\n\n"); } } catch (JSONException e) { e.printStackTrace(); } } } private String inputStreamToString(InputStream is) { String rLine = ""; StringBuilder answer = new StringBuilder(); InputStreamReader isr = new InputStreamReader(is); BufferedReader rd = new BufferedReader(isr); try { while ((rLine = rd.readLine()) != null) { answer.append(rLine); } } catch (IOException e) { e.printStackTrace(); } return answer.toString(); } }