دورة الجافا الرسومية بأستخدام NetBeans ...الدرس(26)_برمجة تطيقات الجوال (8_الاتصال بالويب web)!

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل

دورة الجافا الرسومية بأستخدام NetBeans ...الدرس(26)_برمجة تطيقات الجوال (8_الاتصال بالويب web)!

مُساهمة من طرف أحمد مناع في الثلاثاء مايو 28, 2013 2:27 pm

بسم الله الرحمن الرحيم
إخوانى الكرام أهلا وسهلا بكم ....فى هذا الدرس إن شاء الله تعالى سنتعلم سويا كيفيه الاتصال بالانترنت و الشبكات من جوالك وذلك من خلال المكتبة javax.microedition.io و التى تمكنك من عمليه الاتصال بالشبكات و المكتبة java.io والتى توفر الإدخال / الإخراج (I / O) في مختلف الطبقات والواجهات ونظام البيانات والجداول ....


أولا :الاتصال بشبكات HTTP

شبكات HTTP لمن لا يعرفها هى الشبكات التى تستخدم البروتوكول (HTTP/Hypertext Transfer Protocol):وهو المستخدم لنقل الملفات النصية أو النصوص الكبيرة عبر الإنترنت وهذا البروتوكول هو مثال واضح حيث يظهر لنا في شريط العنوان في متصفحات الإنترنت http://www....ومعظم مواقع الويب تستخدم هذا البروتوكول


ويمكنك الاتصال بتلك الشبكات من خلال الحزمة javax.microedition.io وذلك باستخدام الكائن


javax.microedition.io.HttpConnection
يتم إرجاع HttpConnection من Connector.open عندما يتم الوصول إلى رابط " http://" .....وذلك على النحو التالى :

الرمز:

String url = "http://jonathanknudsen.com/simple";
InputConnection ic = (InputConnection)Connector.open(url);
InputStream in = ic.openInputStream();
// Read stuff from the InputStream
ic.close();

وكما ترون فى الكود أعلاه قمنا بالاعلان عن متغير url وذلك لوضع رابط الاتصال بالويب ....ثم فتح هذا الرابط باستخدام الاسلوب Connector.open وقراءة البيانات من InputStream


مثال / نفترض أننا نريد الاتصال بصورة من موقع معين ....سيكون الحل على النحو التالى :

1_ قم بأنشاء مشروع جديد وليكن web ثم أنشىء كلاس بأسم mainForm مثلا

2_من خلال التويب FLow قم بإضافة نافذة

3_ قم باضافة أمر تحكم exitCommand و أجعل الخاصية label تساوى "إنهاء"

4_ أفتح صفحة الكود ستجد الكود الخاص بإنشاء الكلاس mainform كما يلى :

الرمز:
public class mainForm extends MIDlet implements CommandListener {

سنقوم بتعديل الكود السابق و ذلك بإضافة الواجهة Runnable ليصبح كما يلى :

الرمز:
public class mainForm extends MIDlet implements CommandListener,Runnable {

5_ نقوم باتسيراد المكتبات التالية :

الرمز:
import java.io.*;
import javax.microedition.io.*;

6_ وبما أن مشروعنا يحيتوى على الواجهة Runnable فلابد من إنشاء الطريقة Run وذلك على النحو التالى :

الرمز:
 public void run() {
       
    }

7_ داخل تلك الطريقة سنقوم بكتاية الاوامر اللازمة للاتصال للموقع و قراة الصورة و ذلك على النحو التالى :

_ نقوم بالاعلان عن كائنيين الاول من نوع HttpConnection و الذى سيقوم بالاتصال ببروتوكول http و الثانى من نوع DataInputStream و الذى سيقوم بقراءة البيانات ....على النحو التالى :

الرمز:
HttpConnection hc = null;
        DataInputStream in = null;

_ نقوم بفتح الاتصال بالرابط و ذلك با ستخدام الكود التالى :

الرمز:
 try {

            String url = "http://xpedition009.com/simple/java.png";
            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 {
                int chunkSize = 512;
                int index = 0;
                int readLength = 0;
                in = new DataInputStream(hc.openInputStream());
                data = new byte[chunkSize];
                do {
                    if (data.length < index + chunkSize) {
                        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;
            }

كما تلاحظ فى الكود أعلاه ....فى السطر الاول قمنا بالاعلان عن المتغير length لتخزين بيانات الملف فيه وذلك باستخدام الاسلوب getLength لكائن الاتصال hc ....بعد ذلك قمنا بعمل مصفوفة من نوع byte وهى data ...بعد ذلك استخدمنا جملة شرطية للتأكد من وجود بيانات للقراءة ...ويتم قراءة البيانات با استخدام DataInputStream(hc.openInputStream()) وعن طريق حلقة تكرارية يتم تخزين البيانات فى المصفوفة data

_ نقوم بتحويل البيانات التى تم تخزينها فى المصفوفة byte الى صورة و ذلك لكوننا قمنا بقراءة الصورة كبايتات ....وذلك على النحو التالى :

الرمز:
Image image = Image.createImage(data, 0, length);
            ImageItem imageItem = new ImageItem(null, image, 0, null);
            form.append(imageItem);


أذن الكود بالكامل لتلك الطريقة سيكون على النحو التالى :

الرمز:
 public void run() {
       

        HttpConnection hc = null;
        DataInputStream in = null;

        try {

            String url = "http://xpedition009.com/simple/java.png";
            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 {
                int chunkSize = 512;
                int index = 0;
                int readLength = 0;
                in = new DataInputStream(hc.openInputStream());
                data = new byte[chunkSize];
                do {
                    if (data.length < index + chunkSize) {
                        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;
            }
            Image image = Image.createImage(data, 0, length);
            ImageItem imageItem = new ImageItem(null, image, 0, null);
            form.append(imageItem);

            form.setTitle("تم التحميل");
        } catch (IOException ioe) {
            StringItem stringItem = new StringItem(null, ioe.toString());
            form.append(stringItem);
            form.setTitle("Done.");
        } finally {
            try {
                if (in != null) {
                    in.close();
                }
                if (hc != null) {
                    hc.close();
                }
            } catch (IOException ioe) {
            }
        }
    }

_ بعد ذلك نقوم بتحديد الطريقة startApp ثم نكتب الكود التالى وهو المسؤل عن تشغيل الطريقه أعلاه RUN وذلك على النحو التالى :

الرمز:
Thread t = new Thread(this);
            t.start();

و النتيجة كما فى الصورة التالية :


مثال أخر ...فى المثال أعلام قمنا قمنا بفتح أتصال بالويب و قراءة صورة لكن كيف يمكنك فتح موقع ويب ...ستكون نفس الكود السابق مع بعض التعديل البسيط ....فقط سنقوم بإنشاء الطريقة run كما يلى :

الرمز:
 HttpConnection hc = null;
        InputStream is = null;
   

        try {
            hc = (HttpConnection) Connector.open("http://google.com");
            strItem.setText("جارى التحميل....");
            hc.setRequestMethod(HttpConnection.GET);
            if (hc.getResponseCode() == HttpConnection.HTTP_OK) {
                String str;
                is = hc.openInputStream();
                int length = (int) hc.getLength();
                if (length != -1) {
                    byte incomingData[] = new byte[length];
                    is.read(incomingData);
                    str = new String(incomingData);
                } else {
                    ByteArrayOutputStream bytestream = new ByteArrayOutputStream();
                    int ch;
                    while ((ch = is.read()) != -1) {
                        bytestream.write(ch);
                    }
                    str = new String(bytestream.toByteArray());
                    bytestream.close();
                }
           
                form.append(str);
               
               
            }else{
                strItem.setText("غير قادر على الفتح");
               
            }


        } catch (Exception exe) {
        } finally {
            if (is != null) {
                try {
                    is.close();
                } catch (Exception error) {
                }
            }
            if (hc != null) {
                try {
                    hc.close();
                } catch (Exception error) {
                }
            }

        }
    }

الكود أسهل من سابقه ....لكن عند تشغيلك لهذا الكود ستجد صفحة الويب هكذا





وهذا لان تلك البيانات عبارة بيانات نصية ويجب تحويلها الى html ...ففى المثال السابق قمنا بتحويل البيانات النصية الى صورة أما عن كيفية التحويل فى هذا المثال فيوجد بعض الادوات التى تدعم html موجودة على موقع أوراكل و لم استطيع ان احملها لكونى ساكن فى أحد الدول المفروض عليها عقوبات من قبل الويات المتحدة الامركية


الى هنا نكون قد انتهينا من هذا الدرس لنا لقاء اخر فى نفس الموضوع أن شاء الله تعالى

ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم

إن فقدت مكان بذورك التي بذرتها يوما ما سيخبرك المطر أين زرعتها ..لذا إبذر الخير فوق أي أرض وتحت أي سماء ومع أي أحد.. فأنت لا تعلم أين تجده ومتى تجده؟! إزرع جميلا ولو في غير موضعه .... فلا يضيع جميلا أينما زرعا .. فما أجمل العطاء... فقد تجد جزاءه في الدنيا أو يكون لك ذخرا في الآخرة

أحمد مناع
.
.

تاريخ التسجيل : 15/02/2011
المساهمات : 810
النقاط : 1479
التقيم : 69
الدولة : مصر
الجنس : ذكر

http://egy-tech.forumegypt.net

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: دورة الجافا الرسومية بأستخدام NetBeans ...الدرس(26)_برمجة تطيقات الجوال (8_الاتصال بالويب web)!

مُساهمة من طرف زهراء في الثلاثاء مايو 28, 2013 8:49 pm

شكرا لك أستاذ أحمد ....لكن كيف يمكن التغلب على مشكلة دعم html عند فتح موقع ويب ؟

زهراء
........
........

تاريخ التسجيل : 18/02/2011
المساهمات : 262
النقاط : 372
التقيم : 24
الدولة : مصر
الجنس : انثى

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: دورة الجافا الرسومية بأستخدام NetBeans ...الدرس(26)_برمجة تطيقات الجوال (8_الاتصال بالويب web)!

مُساهمة من طرف لمار عادل في الخميس مايو 30, 2013 11:25 am

مساء الخير .....أحب أبدى إعجابى الشديد بهذا المنتدى الاكثر من رائع .....وكنت بسأل عن معلومات كافية أو شرح تفصيلى على الحزمة java.io



لمار عادل
..
..

تاريخ التسجيل : 29/05/2013
المساهمات : 28
النقاط : 46
التقيم : 2
الدولة : مصر
الجنس : انثى

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: دورة الجافا الرسومية بأستخدام NetBeans ...الدرس(26)_برمجة تطيقات الجوال (8_الاتصال بالويب web)!

مُساهمة من طرف أحمد مناع في الخميس مايو 30, 2013 11:30 am

الاخت زهراء ....إن شاء الله قريبا جدا سأحاول البحث عن كيفية دعم Html للجوال ...خصوصا لما فتحت مشروعك الذى قمتى برفعه لاحد الزملاء فهو فيه بعض الاكواد التى سنتعمد عليها إن شاء الله تعالى







الاخت لمار ....بداية أهلا وسهلا بيك فى هذا المنتدى المتواضع و اتمنى أن نكون عند حسن ظنك .....بالنسبة لسؤالك غدا أو بعد غد على الاكثر ستجدين فى هذا المنتدى شرح تفصلي لتلك الحزمة ....فأرجوا الاعتذار

ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم

إن فقدت مكان بذورك التي بذرتها يوما ما سيخبرك المطر أين زرعتها ..لذا إبذر الخير فوق أي أرض وتحت أي سماء ومع أي أحد.. فأنت لا تعلم أين تجده ومتى تجده؟! إزرع جميلا ولو في غير موضعه .... فلا يضيع جميلا أينما زرعا .. فما أجمل العطاء... فقد تجد جزاءه في الدنيا أو يكون لك ذخرا في الآخرة

أحمد مناع
.
.

تاريخ التسجيل : 15/02/2011
المساهمات : 810
النقاط : 1479
التقيم : 69
الدولة : مصر
الجنس : ذكر

http://egy-tech.forumegypt.net

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: دورة الجافا الرسومية بأستخدام NetBeans ...الدرس(26)_برمجة تطيقات الجوال (8_الاتصال بالويب web)!

مُساهمة من طرف لمار عادل في الخميس مايو 30, 2013 11:33 am

انا ممنونة ليك كتير يا استاذ أحمد

لمار عادل
..
..

تاريخ التسجيل : 29/05/2013
المساهمات : 28
النقاط : 46
التقيم : 2
الدولة : مصر
الجنس : انثى

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: دورة الجافا الرسومية بأستخدام NetBeans ...الدرس(26)_برمجة تطيقات الجوال (8_الاتصال بالويب web)!

مُساهمة من طرف لمار عادل في السبت يونيو 01, 2013 12:23 pm

java.io
java.io
java.io
java.io

لمار عادل
..
..

تاريخ التسجيل : 29/05/2013
المساهمات : 28
النقاط : 46
التقيم : 2
الدولة : مصر
الجنس : انثى

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: دورة الجافا الرسومية بأستخدام NetBeans ...الدرس(26)_برمجة تطيقات الجوال (8_الاتصال بالويب web)!

مُساهمة من طرف أحمد مناع في السبت يونيو 08, 2013 8:02 am

لمار عادل كتب:java.io
java.io
java.io
java.io

الفاضلة لمار ....أرجوا المعذرة على كل ذلك التأخير فى الرد عليك و ذلك لكونى فى الفترة الماضية حصلت بعض الظروف الصعبة التى منعتنى من كتابة اى درس فى المنتدى و أوعدك أن بعد ذلك لن نتأخر عليكم فى الرد ....و اليك شرح على JAVA .IO على الرابط التالى

http://egy-tech.forumegypt.net/t431-topic#1059

ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم

إن فقدت مكان بذورك التي بذرتها يوما ما سيخبرك المطر أين زرعتها ..لذا إبذر الخير فوق أي أرض وتحت أي سماء ومع أي أحد.. فأنت لا تعلم أين تجده ومتى تجده؟! إزرع جميلا ولو في غير موضعه .... فلا يضيع جميلا أينما زرعا .. فما أجمل العطاء... فقد تجد جزاءه في الدنيا أو يكون لك ذخرا في الآخرة

أحمد مناع
.
.

تاريخ التسجيل : 15/02/2011
المساهمات : 810
النقاط : 1479
التقيم : 69
الدولة : مصر
الجنس : ذكر

http://egy-tech.forumegypt.net

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: دورة الجافا الرسومية بأستخدام NetBeans ...الدرس(26)_برمجة تطيقات الجوال (8_الاتصال بالويب web)!

مُساهمة من طرف NEXT في السبت يونيو 08, 2013 2:37 pm

.أرجوا المعذرة على كل ذلك التأخير فى الرد عليك و ذلك لكونى فى الفترة
الماضية حصلت بعض الظروف الصعبة التى منعتنى من كتابة اى درس فى المنتدى


حمد الله على السلامة يا عمنا

NEXT
الادارة
الادارة

تاريخ التسجيل : 18/02/2011
المساهمات : 262
النقاط : 378
التقيم : 10
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: دورة الجافا الرسومية بأستخدام NetBeans ...الدرس(26)_برمجة تطيقات الجوال (8_الاتصال بالويب web)!

مُساهمة من طرف لمار عادل في الأحد يونيو 09, 2013 7:21 pm

أحمد مناع كتب:

الفاضلة لمار ....أرجوا المعذرة على كل ذلك التأخير فى الرد عليك و ذلك لكونى فى الفترة الماضية حصلت بعض الظروف الصعبة التى منعتنى من كتابة اى درس فى المنتدى و أوعدك أن بعد ذلك لن نتأخر عليكم فى الرد ....و اليك شرح على JAVA .IO على الرابط التالى

[url=http://egy-tech.forumegypt.net/t431-topic#1059
http://egy-tech.forumegypt.net/t431-topic#1059[/quote[/url]]



الله يبارك فيك اخى الكريم ....

لمار عادل
..
..

تاريخ التسجيل : 29/05/2013
المساهمات : 28
النقاط : 46
التقيم : 2
الدولة : مصر
الجنس : انثى

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: دورة الجافا الرسومية بأستخدام NetBeans ...الدرس(26)_برمجة تطيقات الجوال (8_الاتصال بالويب web)!

مُساهمة من طرف NEXT في السبت نوفمبر 22, 2014 6:25 pm

للرفع

NEXT
الادارة
الادارة

تاريخ التسجيل : 18/02/2011
المساهمات : 262
النقاط : 378
التقيم : 10
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

استعرض الموضوع السابق استعرض الموضوع التالي الرجوع الى أعلى الصفحة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى