Selasa, 19 April 2011

Penggunaan Thread koneksi Url yang berulang-ulang


Benere juga ga tau judul yang paling tepatnya gimana..:D
skedar share aje..
kadang untuk membangun sebuah program(tentu aja java me) yang terintegrasi dengan database pastinya,kita perlu banyak menggunakan koneksi pemanggilan ke server. untuk efisiensi penggunaan thread nya maka perlu membuat class agar bisa dipanggil tanpa mengulang-ulang script yang sama..
dari kasus pribadi yang saya alami, karena stress gara2 program eror mulu tiap kali pemanggilan thread dengan data yang salah(penggulangan eror) pada skripsi saya yang mo ujian tanggal 23..makanya saya mencoba dengan cara bar-bar..klik sana,klik sini,copy,paste,liat web2 referensi akhirnya ketemu juga...

disini ada banyak thread ex 2 aja:

class bayar extends Thread
{
int h=cgBank.getSelectedIndex();

public void run()
{
try
{
data = "";
String url = "http://localhost/admin/client/bayar.php";

data = "nama="+tfNamaBayar.getString()+"&kd_booking="+tfKdBooking.getString()+"&email_byr="+tfEmailBayar.getString()
+"&hp_byr="+tfHpBayar.getString()+"&jml_byr="+tfJmlBayar.getString()+"&rek="+tfRek.getString()
+"&bank="+cgBank.getString(h)+"&id_u="+siUser.getText();

String data = KoneksiURL(url);
siBayar.setText("" + data);
}
catch(Exception e)
{
}
}

}
class booking extends Thread
{
int it = cgBook.getSelectedIndex();
int id=cgCaptca.getSelectedIndex();
public void run()
{
try
{
data ="";
String url = "http://localhost/admin/client/booking.php";

data = "b_no_penerbangan="+cgBook.getString(it)+"&jml_booking="+tfJmlBooking.getString()+
"&kd_booking="+cgCaptca.getString(id)+"&id_u="+siUser.getText();

String data = KoneksiURL(url);
siHasil2.setText("" + data);
}
catch(Exception e)
{
}
}

}

Dan masi banyak lagi...
dimana sebelumnya pemanggilan KoneksiUrl nya (yang eror):

public String KoneksiURL(String url) throws IOException
{
HttpConnection http = null;
InputStream is = null;
StringBuffer sb = new StringBuffer();
OutputStream os = null;
try
{
http = (HttpConnection) Connector.open(url);
http.setRequestMethod(HttpConnection.POST);
http.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
http.setRequestProperty("Accept_Language","en-US");
http.setRequestProperty("User-Agent", "Profile/MIDP-2.0 Configuration/CLDC-1.0");
os = http.openDataOutputStream();
os.write(data.getBytes());


if (http.getResponseCode() == 200)
{
int karakter;
is = (http.openInputStream());
while ((karakter = is.read()) != -1){
sb.append((char)karakter);
}
}

String result = sb.toString();
return result;

} catch (Exception x) {
x.printStackTrace();
if (http != null)
http.close();

}return null;

}

dan terjadi hasilnya kaga mau nyimpen server dengan siHasil dan siBayar muncul null;
maka saya menganalisa, mungkin ini koneksi kebuka ga mo nutup setiap beralih ke thread berikutnya dan juga openDataOutputStream();
kagak mau ganti ke tiap thread..

dengan rahmat Allah Yang Maha Penyayang maka terbitlah ide untuk kembali mengotak-atik KoneksiUrl nya,dan akhirnya...excellent..:D subhanallah..

public String KoneksiURL(String url) throws IOException
{
HttpConnection http = null;
InputStream is = null;
StringBuffer sb = new StringBuffer();
OutputStream os = null;
try
{
http = (HttpConnection) Connector.open(url);
http.setRequestMethod(HttpConnection.POST);
http.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
http.setRequestProperty("Accept_Language","en-US");
http.setRequestProperty("User-Agent", "Profile/MIDP-2.0 Configuration/CLDC-1.0");
os = http.openDataOutputStream();
os.write(data.getBytes());


if (http.getResponseCode() == 200)
{
int karakter;
is = (http.openInputStream());
while ((karakter = is.read()) != -1){
sb.append((char)karakter);
}

is.close();
http.close();
os.flush();
os.close();
}

String result = sb.toString();
return result;



} catch (Exception x) {
x.printStackTrace();
if (http != null)
http.close();

}return null;

}

cuman tambahin
is.close();
http.close();
os.flush();
os.close();

mengapa begitu??
sebab setiap hasil dari koneksi url jika sudah sukses menerima respon harus di clear (flush).dan pula harus ditutup agar di thread berikutnya bisa tereksekusi sempurna.begitu juga dengan inputstream nya serta http conneksinya..

hehe...:D
thanks GOD..
moga bermanfaat buat temen2 semua..
doain saya buat lulus pendadaran dengan nilai memuaskan...amiiin.

1 komentar:

Posting Komentar