Mamat Zone

HOME | SITEMAP

HttpConnection Untuk Load String dan Image

Posted on 2008-09-05 16:04:19 by mamat, 0 Comments

HttpConnection Untuk Load String dan Image

Yak Biar gak bingung nyari-nyari lagi filenya, dan Biar mudah untuk mencarinya kembali. Berikut ini kita akan membahas bagaimana memanfaatkan HttpConnection pada J2ME.

Function ini sangat penting selain programing socket di J2ME. HttpConnection dalam pengaplikasiaannya sangat banyak, contoh: untuk menangkap webservice kita membutuhkannya, untuk browsing image juga kita membutuhkannya. HttpConnection sangat penting untuk melakukakan koneksi keluar.

#Beriktu ini adalah contoh dari HttpConnection untuk mendapatkan String

				
/*
 * HttpConnection.java
 *
 * Created on December 18, 2007, 3:41 PM
 *
 */

package id.gov.bmg.amikom;

import java.io.IOException;
import java.io.InputStream;
import javax.microedition.io.Connector;
import javax.microedition.io.HttpConnection;

/**
 *
 * @author mamat-dev
 */
public class StringHttpConnection {
    String url;
    /** Creates a new instance of HandlerHttpConnection */
    public StringHttpConnection (String url) {
        this.url=url;
    }
    
    public String getPage() throws IOException {
		
	StringBuffer b = new StringBuffer();
        InputStream is = null;
        HttpConnection c = null;
        try {
        	long len = 0 ;
        	int ch = 0;

            c = (HttpConnection)Connector.open(url);
            is = c.openInputStream();

            len =c.getLength() ;
            if ( len != -1) {
            	// Membaca panjang byte yang diterima
            	for (int i =0 ; i < len ; i++ )
            		if ((ch = is.read()) != -1)
            			b.append((char) ch);
            } else {
                // Membaca sampek koneksi terputus
            	while ((ch = is.read()) != -1) {
                    len = is.available() ;
                    b.append((char)ch);
            	}
            }
		//kembalikan dalam bentuk String, dari Hasil StringBuffer
            return (b.toString());
        }  finally {
           is.close();
           c.close();
        }
    }
}

			


#Dalam mengambil gambar menggunakan HttpConnection, kita perlu trik. Hehe tapi gak begitu rumit amat sih. Berikut ini source codenya:
				
/*
 * ImageLoad.java
 *
 * Created on May 1, 2008, 10:36 PM
 *
 */

package main;

import java.io.DataInputStream;
import java.io.IOException;
import javax.microedition.io.Connector;
import javax.microedition.io.HttpConnection;
import javax.microedition.lcdui.Image;

/**
 *
 * @author mamat-dev
 */
public class ImageHttpConnection {
    Image img;
    
    /** Creates a new instance of ImageLoad */
    public ImageHttpConnection (String url) {
        this.img = loadImage(url);
        
    }
    
    public Image getImage(){
        return this.img;
    }
    
    public Image loadImage(String url){
        HttpConnection hc = null;
        DataInputStream in = null;

        try {
          hc = (HttpConnection)Connector.open(url);
          int length = (int)hc.getLength();
          byte[] data = null;
          if (length != -1) {
            data = new byte[length];
            in = new DataInputStream(hc.openInputStream());
            in.readFully(data);
          }else {
            // Jika panjang file tidak diberikan(data stream), maka ambil perpotong-potong(chunk).
            int chunkSize = 512;
            int index = 0;
            int readLength = 0;
            in = new DataInputStream(hc.openInputStream());
            data = new byte[chunkSize];
            do {
              if (data.length < index + chunkSize) {
		//tangkap byte datanya
                byte[] newData = new byte[index + chunkSize];
                System.arraycopy(data, 0, newData, 0, data.length);
                data = newData;
              }
              readLength = in.read(data, index, chunkSize);
              index += readLength;
            } while (readLength == chunkSize);
            length = index;
          }
	  //rubah data byte kedalam bentuk Image, dan kembalikan ;)
          Image image = Image.createImage(data, 0, length);
          return image;
        } catch (IOException ioe) {
            return null;
        } finally {
          try {
            if (in != null) in.close();
            if (hc != null) hc.close();
          } catch (IOException ioe) {}
        }
    }
}


			


Setelah Membuat Class di atas, lalu bagaimana cara menggunakan. Karena Class ini memerlukan kinerja processor pada hardware mobile, kita harus menggunakan THREAD biar HandPhone kita tidak Hang hehe:P. Berikut ini contohnya
				
new Thread(new Runnable() {
	public void run() {
        	form1.deleteAll();
                             
                ImageHttpConnection il = new ImageHttpConnection ("http://xxx/www/java/mamat/tiwul.gif");
                                            
                form1.append(il.getImage());

		StringHttpConnection sl = new StringHttpConnection ("http://xxx/www/java/mamat/getux.php");
                                            
                form1.append(sl.getPage() );
               
                            
        }
}).start(); 


			

Other Articles