package com.example.patrice.http01;


import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;
import android.widget.Toast;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;


// http://androidcss.com/android/android-fetch-php-without-library/

// https://kosalgeek.com/connect-android-php-mysql-generic-asynctask/

// http://camposha.info/source/android-php-mysql-save-http-post-source/

// https://www.codeproject.com/Articles/267023/Send-and-receive-json-between-android-and-php

//https://www.learn2crack.com/2013/10/android-asynctask-json-parsing-example.html

// http://inchoo.net/dev-talk/android-development/simple-android-json-parsing-example-with-output-into-listactivity/

// https://androidjson.com/android-upload-image-server-using-php-mysql/    ++++++++

public class http07 extends AppCompatActivity
{

    // CONNECTION_TIMEOUT and READ_TIMEOUT are in milliseconds
    public static final int CONNECTION_TIMEOUT = 10000;
    public static final int READ_TIMEOUT = 15000;
    TextView textPHP;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.http07_layout);
        textPHP = (TextView) findViewById(R.id.textPHP);

        //Make call to AsyncRetrieve
        new AsyncRetrieve().execute();
    }

    private class AsyncRetrieve extends AsyncTask<String, String, String>
    {
        ProgressDialog pdLoading = new ProgressDialog(http07.this);
        HttpURLConnection conn;
        URL url = null;

        //this method will interact with UI, here display loading message
        @Override
        protected void onPreExecute(){
            super.onPreExecute();

            pdLoading.setMessage("\tLoading...");
            pdLoading.setCancelable(false);
            pdLoading.show();

        }

        // This method does not interact with UI, You need to pass result to onPostExecute to display
        @Override
        protected String doInBackground(String... params) {
            try {
                // Enter URL address where your php file resides
                //url = new URL("http://192.168.1.7/example.php");

                url = new URL("http://analog-design.net/WORKAREA/WEBSITE/Codebar/http07.php");

            } catch (MalformedURLException e)
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
                return e.toString();
            }
            try {

                // Setup HttpURLConnection class to send and receive data from php and mysql
                conn = (HttpURLConnection) url.openConnection();
                conn.setReadTimeout(READ_TIMEOUT);
                conn.setConnectTimeout(CONNECTION_TIMEOUT);
                conn.setRequestMethod("GET");

                // setDoOutput to true as we recieve data from json file
                conn.setDoOutput(true);

            } catch (IOException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
                return e1.toString();
            }

            try {

                int response_code = conn.getResponseCode();

                // Check if successful connection made
                if (response_code == HttpURLConnection.HTTP_OK) {

                    // Read data sent from server
                    InputStream input = conn.getInputStream();
                    BufferedReader reader = new BufferedReader(new InputStreamReader(input));
                    StringBuilder result = new StringBuilder();
                    String line;

                    while ((line = reader.readLine()) != null) {
                        result.append(line);
                    }

                    // Pass data to onPostExecute method
                    return (result.toString());

                } else {

                    return ("unsuccessful");
                }

            } catch (IOException e) {
                e.printStackTrace();
                return e.toString();
            } finally {
                conn.disconnect();
            }


        }

        // this method will interact with UI, display result sent from doInBackground method
        @Override
        protected void onPostExecute(String result)
        {
            pdLoading.dismiss();

            if(result.equals("Success! This message is from PHP")) {
                textPHP.setText(result.toString());
            }else{
                // you to understand error returned from doInBackground method
                Toast.makeText(http07.this, result.toString(), Toast.LENGTH_LONG).show();
            }

        }

    }
}