HTTP CONNECTION



Pembahasan selanjutnya adalah menghubungkan aplikasiandroid dengan internet dengan menggunakan http connection, disini anda akan belajar bagaimana membuat aplikasi terhubung dengan internet untuk mendowload gambar dan teks, serta menggunakan rss.
Buatlah project baru seperti ketentuan berikut :

Project Name : HttpURLConnectionA
Buitl Target : Android 2.2
Application name : HttpURLConnectionA
Package name : com.bogotobogo.httpconnecta
Activity : main.xml
Min SDK :8

Buka file layout/main.xml

main.xml 
------------------------------------------------------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:scrollbars="vertical">
    <Button 
    android:id="@+id/Button01" 
    android:text="@string/button01" 
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content">
    </Button>
    <Button android:id="@+id/Button02" 
    android:layout_height="wrap_content" 
    android:text="@string/button02" 
    android:layout_width="wrap_content">
    </Button>
    <ImageView 
    android:id="@+id/imageview01" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:cropToPadding="true" >
    </ImageView>
    <TextView  
    android:id="@+id/textview01"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" />
</LinearLayout>
------------------------------------------------------------------



Setelah itu kita copy kedua gambar icon di folder res, Perhatikan gambar berikut




Pada package src/HttpURLConnectionA, bukaHttpURLConnectionA.java pastikan kodenya seperti berikut

HttpURLConnectionA.java
--------------------------------------------------------------------------------------------

package com.bogotobogo.httpconnecta;

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;

import android.app.Activity;
import android.app.ProgressDialog;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

public class HttpURLConnectionA extends Activity {
   
    private ProgressDialog progressDialog;   
    private Bitmap bitmap = null;
    private String text = null;
   
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        Button imageBtn = (Button)findViewById(R.id.Button01);
        Button textBtn = (Button)findViewById(R.id.Button02);
       
        imageBtn.setOnClickListener( new OnClickListener() {
            public void onClick(View v) {
                downloadImage("http://www.bogotobogo.com/images/smalltiger.gif");           
            }
        });
       
        textBtn.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                downloadText("http://www.bogotobogo.com/android.html");
            }
        });
    }
   
    private void downloadImage(String urlStr) {
        progressDialog = ProgressDialog.show(this, "", 
                    "Downloading Image from " + urlStr);
        final String url = urlStr;
       
        new Thread() {
            public void run() {
                InputStream in = null;
                Message msg = Message.obtain();
                msg.what = 1;
                try {
                    in = openHttpConnection(url);
                    bitmap = BitmapFactory.decodeStream(in);
                    Bundle b = new Bundle();
                    b.putParcelable("bitmap", bitmap);
                    msg.setData(b);
                    in.close();
                } catch (IOException e1) {
                    e1.printStackTrace();
                }
                messageHandler.sendMessage(msg);                   
            }
         }.start();
    }
   
    private void downloadText(String urlStr) {
        progressDialog = ProgressDialog.show(this, "", 
                "Download Text from " + urlStr);
        final String url = urlStr;
       
        new Thread () {
            public void run() {
                int BUFFER_SIZE = 2000;
                InputStream in = null;
                Message msg = Message.obtain();
                msg.what=2;
                try {
                    in = openHttpConnection(url);
                   
                    InputStreamReader isr = new InputStreamReader(in);
                    int charRead;
                      text = "";
                      char[] inputBuffer = new char[BUFFER_SIZE];

                          while ((charRead = isr.read(inputBuffer))>0)
                          {                   
                              String readString = 
                                  String.copyValueOf(inputBuffer, 0, charRead);                   
                              text += readString;
                              inputBuffer = new char[BUFFER_SIZE];
                          }
                         Bundle b = new Bundle();
                            b.putString("text", text);
                            msg.setData(b);
                          in.close();
                     
                }catch (IOException e2) {
                    e2.printStackTrace();
                }
                messageHandler.sendMessage(msg);
            }
        }.start();   
    }
   
    private InputStream openHttpConnection(String urlStr) {
        InputStream in = null;
        int resCode = -1;
       
        try {
            URL url = new URL(urlStr);
            URLConnection urlConn = url.openConnection();
           
            if (!(urlConn instanceof HttpURLConnection)) {
                throw new IOException ("URL is not an Http URL");
            }
           
            HttpURLConnection httpConn = (HttpURLConnection)urlConn;
            httpConn.setAllowUserInteraction(false);
            httpConn.setInstanceFollowRedirects(true);
            httpConn.setRequestMethod("GET");
            httpConn.connect(); 

            resCode = httpConn.getResponseCode();                
            if (resCode == HttpURLConnection.HTTP_OK) {
                in = httpConn.getInputStream();                                
            }        
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return in;
    }
   
    private Handler messageHandler = new Handler() {
       
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            switch (msg.what) {
            case 1:
                ImageView img = (ImageView) findViewById(R.id.imageview01);
                img.setImageBitmap((Bitmap)(msg.getData().getParcelable("bitmap")));
                break;
            case 2:
                TextView text = (TextView) findViewById(R.id.textview01);
                text.setText(msg.getData().getString("text"));
                break;
            }
            progressDialog.dismiss();
        }
    };
}
-------------------------------------------------------------
Untuk Mengatasi Terjadi Force Close, Pada package src/AndroidManifest, buka AndroidManifest.xml pastikan kodenya seperti berikut 

AndroidManifest.xml


-----------------------------------------------------------------------------


<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      android:versionCode="1"
      android:versionName="1.0" package="com.bogotobogo.httpconnecta">
    <uses-sdk android:minSdkVersion="8" />
    <uses-permission android:name="android.permission.INTERNET"></uses-permission>
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".HttpURLConnectionA"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>  

---------------------------------------------------
Setelah itu Run







donwload projek nya. 


Share this

Related Posts

Previous
Next Post »