ตุลาคม 18, 2017, 11:34:23 pm *
ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน
ส่งอีเมล์ยืนยันการใช้งาน?

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น
   หน้าแรก   ช่วยเหลือ เข้าสู่ระบบ สมัครสมาชิก  
หน้า: [1]   ลงล่าง
  พิมพ์  
ผู้เขียน หัวข้อ: Android 2015: HttpURLConnection, JSON and AsyncTask  (อ่าน 1986 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
ShadowMan
Administrator
Hero Member
*****
ออฟไลน์ ออฟไลน์

เพศ: ชาย
กระทู้: 8267


ShadowWares


| |
« เมื่อ: พฤศจิกายน 19, 2015, 02:42:19 pm »

Android 2015: HttpURLConnection, JSON and AsyncTask



Code:
<?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"
    android:padding="16dp"
    android:background="#112233"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/btnJson"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="JSON Request"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true" />

    <TextView
        android:id="@+id/tvJsonItem"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:text=""
        android:background="#EE88AA"
        android:layout_marginTop="16dp"
        android:layout_below="@+id/btnJson"
        android:padding="16dp"
        android:hint="JSON Display Area"
        android:layout_centerHorizontal="true" />
</RelativeLayout>


Code:
/*
* https://www.youtube.com/watch?v=frltqnSKqiA
*/

package com.control.insight.jsondemo1;

import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

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;

public class MainActivity extends AppCompatActivity {

    Button btnHit;
    TextView tvData;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btnHit = (Button)findViewById(R.id.btnJson);
        tvData = (TextView)findViewById(R.id.tvJsonItem);

        btnHit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // new JSONTask().execute("http://jsonparsing.parseapp.com/jsonData/moviesDemoItem.txt");
                new JSONTask().execute("http://jsonparsing.parseapp.com/jsonData/moviesDemoList.txt");
            }
        });
    }

    public String getJson(String link) {
        HttpURLConnection connection = null;
        StringBuffer buffer = null;
        BufferedReader reader=null;
        InputStream stream;

        try {
            URL url = new URL(link);
            connection = (HttpURLConnection) url.openConnection();
            connection.connect();

            stream = connection.getInputStream();
            reader = new BufferedReader(new InputStreamReader(stream));

            buffer = new StringBuffer();
            String line = "";
            while ( (line = reader.readLine()) != null ) {
                buffer.append(line);
            }
        }
        catch (MalformedURLException e) {
            e.printStackTrace();
        }
        catch (IOException e) {
            e.printStackTrace();
        }
        finally {
            if(connection != null) {
                connection.disconnect();
            }
            try {
                if(reader != null) {
                    reader.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        String finalJason = buffer.toString();
        String movieName;
        int movieYear;
        StringBuffer finalBufferedData = new StringBuffer();

        try {
            JSONObject parentObject = new JSONObject(finalJason);
            JSONArray parentArray = parentObject.getJSONArray("movies");
            for(int idx=0; idx<parentArray.length(); idx++) {
                JSONObject finaleObject = parentArray.getJSONObject(idx);
                movieName = finaleObject.getString("movie");
                movieYear = finaleObject.getInt("year");
                finalBufferedData.append(movieName + " - " + movieYear + "\n");
            }

        } catch (JSONException e) {
            e.printStackTrace();
        }

        return finalBufferedData.toString();
    }

    public class JSONTask extends AsyncTask<String, String, String> {
        @Override
        protected String doInBackground(String... params) {
            String result = getJson(params[0]);
            return result;
        }

        @Override
        protected void onPostExecute(String result) {
            super.onPostExecute(result);
            tvData.setText(result);
        }
    }
}


บันทึกการเข้า

By SDW: Do No Wrong Is Do Nothing
          If you want to increase your success rate, double your failure rate
หน้า: [1]   ขึ้นบน
  พิมพ์  
 
กระโดดไป: