การเชื่อมต่อ API เบื้องต้น (Android Studio) : webapponsite

การเชื่อมต่อ API เบื้องต้น (Android Studio)

ในบทความนี้จะสอนวิธีการเชื่อมต่อ API เบื้องต้นสำหรับ Android โดยใช้ภาษา Java ซึ่งการเชื่อมต่อแบบที่จะกล่าวถึงต่อไปนี้เป็นวิธีการเชื่อมต่อแบบเก่าแต่ก็ยังสามารถทำงานได้ปกติและมีประสิทธิภาพพอสมควร

การเชื่อมต่อ API เบื้องต้น (Android Studio)
ในบทความโค้ดนี้จะสอนวิธีการเชื่อมต่อ API เบื้องต้นสำหรับ Android โดยใช้ภาษา Java ซึ่งการเชื่อมต่อแบบที่จะกล่าวถึงต่อไปนี้เป็นวิธีการเชื่อมต่อแบบเก่าแต่ก็ยังสามารถทำงานได้ปกติและมีประสิทธิภาพพอสมควร
1. ติดตั้ง org.apache.http.legacy ที่ระดับแอพก่อนเพื่อให้แอพสามารถเรียกใช้ package ของ  apache ได้
เชื่อมต่อ API
2. เราสร้างไฟล์ ConnectAPI.java ขึ้นมา ซึ่ง Code ตัวอย่างนั้นจะมี 2 ประเภทให้เลือกใช้ระหว่าง POST,GET ตามความเหมาะสมของงาน


public class ConnectAPI {
    public String getPOST(String url, List params) {
        StringBuilder str = new StringBuilder();
        HttpClient client = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost(url);

        try {
            httpPost.setEntity(new UrlEncodedFormEntity(params));
            HttpResponse response = client.execute(httpPost);
            StatusLine statusLine = response.getStatusLine();
            int statusCode = statusLine.getStatusCode();
            if (statusCode == 200) {
                HttpEntity entity = response.getEntity();
                InputStream content = entity.getContent();
                BufferedReader reader_buffer = new BufferedReader
                        (new InputStreamReader(content));

                String line;
                while ((line = reader_buffer.readLine()) != null) {
                    str.append(line);
                }
            } else {
                Log.e("Log", "Failed to download file..");
            }
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return str.toString();
    }

    public static String getGET(String url) {
        StringBuilder str = new StringBuilder();
        HttpClient client = new DefaultHttpClient();
        HttpGet httpGet = new HttpGet(url);
        try {
            HttpResponse response = client.execute(httpGet);
            StatusLine statusLine = response.getStatusLine();
            int statusCode = statusLine.getStatusCode();
            if (statusCode == 200) { // Download OK
                HttpEntity entity = response.getEntity();
                InputStream content = entity.getContent();
                BufferedReader reader = new BufferedReader(new InputStreamReader(content));
                String line;
                while ((line = reader.readLine()) != null) {
                    str.append(line);
                }
            } else {
                Log.e("Log", "Failed to download result..");
            }
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return str.toString();
    }
}

3. กลับไปที่ไฟล์หลักที่จะทำการเชื่อมต่อสมมุติเราจะเชื่อมต่อที่ไฟล์ MainActivity.java 
ให้เราสร้าง Object ขึ้นมาเพื่อให้เราสามารถเรียกใช้ Method เชื่อมต่อ API ที่ไฟล์ ConnectAPI.java


//สร้าง Object
ConnectAPI connectapi = new ConnectAPI();
//Connect แบบ POST


String url = "http://www.connectapi.com/";
List params = new ArrayList();
params.add(new BasicNameValuePair("key1", "value1"));
params.add(new BasicNameValuePair("key2", "value2"));
String result = connectapi.getPOST(url,params);
Toast.makeText(this,result,Toast.LENGTH_SHORT).show(); 

ในการเชื่อต่อแบบ GET ก็ทำในลักษณะคล้ายๆกันกับ POST แต่แบบ GET จะระบุค่าเข้าไปตาม url เลย


String url = "http://www.connectapi.com/1";
String result = connectapi.getGET(url);

เพียงเท่านี้เราก็สามารถเชื่อมต่อ API ได้แล้วส่วนของการนำค่ามาใช้นั้นโดยส่วนใหญ่ API จะอยู่ในรูปแบบของ JSON เพราะเป็นที่นิยม เราก็สามารถนำ String result มาใช้ประโยชน์ต่อได้