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

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

اذهب الى الأسفل

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

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

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


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

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


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


javax.microedition.io.HttpConnection
يتم إرجاع HttpConnection من Connector.open عندما يتم الوصول إلى رابط " [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] .....وذلك على النحو التالى :

الكود:

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();

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

دورة الجافا الرسومية بأستخدام NetBeans ...الدرس(26)_برمجة تطيقات الجوال (8_الاتصال بالويب web)! 983094985
مثال أخر ...فى المثال أعلام قمنا قمنا بفتح أتصال بالويب و قراءة صورة لكن كيف يمكنك فتح موقع ويب ...ستكون نفس الكود السابق مع بعض التعديل البسيط ....فقط سنقوم بإنشاء الطريقة 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) {
                }
            }

        }
    }

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


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

دورة الجافا الرسومية بأستخدام NetBeans ...الدرس(26)_برمجة تطيقات الجوال (8_الاتصال بالويب web)! 440812606
وهذا لان تلك البيانات عبارة بيانات نصية ويجب تحويلها الى html ...ففى المثال السابق قمنا بتحويل البيانات النصية الى صورة أما عن كيفية التحويل فى هذا المثال فيوجد بعض الادوات التى تدعم html موجودة على موقع أوراكل و لم استطيع ان احملها لكونى ساكن فى أحد الدول المفروض عليها عقوبات من قبل الويات المتحدة الامركية


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

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

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

https://egy-tech.forumegypt.net

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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







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

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

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

https://egy-tech.forumegypt.net

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

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

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

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

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

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

دورة الجافا الرسومية بأستخدام NetBeans ...الدرس(26)_برمجة تطيقات الجوال (8_الاتصال بالويب web)! Empty رد: دورة الجافا الرسومية بأستخدام 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)! Empty رد: دورة الجافا الرسومية بأستخدام NetBeans ...الدرس(26)_برمجة تطيقات الجوال (8_الاتصال بالويب web)!

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

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

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

[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]

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

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

https://egy-tech.forumegypt.net

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

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

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

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


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

ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
دورة الجافا الرسومية بأستخدام NetBeans ...الدرس(26)_برمجة تطيقات الجوال (8_الاتصال بالويب web)! Do.php?imgf=154090993464951
NEXT
NEXT
الادارة
الادارة

تاريخ التسجيل : 18/02/2011
المساهمات : 446
النقاط : 200660
التقيم : 28
الدولة : مصر
الجنس : ذكر

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

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

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

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

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

[url=https://egy-tech.forumegypt.net/t431-topic#1059
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط][/quote[/url]]



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

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

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

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

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

للرفع

ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
دورة الجافا الرسومية بأستخدام NetBeans ...الدرس(26)_برمجة تطيقات الجوال (8_الاتصال بالويب web)! Do.php?imgf=154090993464951
NEXT
NEXT
الادارة
الادارة

تاريخ التسجيل : 18/02/2011
المساهمات : 446
النقاط : 200660
التقيم : 28
الدولة : مصر
الجنس : ذكر

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

الرجوع الى أعلى الصفحة

ََ

مواضيع ذات صلة


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