کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت

آموزش نحوه ارسال یک Request به سرور با روش Get در اندروید

آموزش نحوه ارسال یک Request به سرور با روش Get در اندروید
شرح مختصر پروژه

در این مقاله قصد داریم تا نحوه ارسال یک Request به سرور با استفاده از روش Get را برای شما توضیح دهیم. اهداف پروژه : در این پروژه ما قصد داریم اهداف زیر را پیاده سازی نماییم: ارسال مقادیر وارد شده توسط کاربر به سرور...

توضیحات پروژه

دوره آموزش آندروید 

دوره آموزش اندروید

دوره آموزش برنامه نویسی اندروید

 

رمز فایل :tahlildadeh.com

 

کلیه حقوق مادی و معنوی این مقاله متعلق به آموزشگاه تحلیل داده می باشد و هر گونه استفاده غیر قانونی از آن پیگرد قانونی دارد .

 

با عرض سلام و خسته نباشید به شما دانشجویان محترم آموزشگاه تحلیلگر داده ها. در این مقاله قصد داریم تا نحوه ارسال یک Request به سرور با استفاده از روش Get را برای شما توضیح دهیم.

 

اهداف پروژه :

در این پروژه ما  قصد داریم اهداف زیر را پیاده سازی نماییم:

ارسال مقادیر وارد شده توسط کاربر به سرور

دریافت پاسخ سرور و نمایش آن به کاربر

 

برای شروع کار ابتدا می بایست یک پروژه جدید در محیط Eclipse ایجاد نماییم. برای این منظور از منوی File زیر منوی New و سپس زیر منوی Android Application Project را انتخاب می نماییم. (شکل 1)

clip_image002[12]

شکل 1

همچنین برای ساده تر شدن و بالا بردن سرعت کار می توانید از منوی ابزار ها، منوی New و سپس Android Aplication Project را انتخاب نمایید.(شکل 2)

 

 

 

 

 

 

clip_image004[12]

شکل 2

با انجام هر دو روش پنجره جدیدی با عنوان New Android Application باز می گردد. (شکل 3)

clip_image006[8]

شکل 3

 

در این پنجره قسمت هایی وجود دارد که در زیر به توضیح آنها می پردازیم :

Aplication Name : در این فیلد می بایست نام برنامه خود را وارد نمایید. توجه داشته باشید که هر مقداری را که در این فیلد وارد نمایید، برنامه با این نام در لیست برنامه های نصب شده قرار خواهد گرفت.

در این فیلد می توانید یک رشته فارسی نیز وارد نمایید.

 

Project Name : در این فیلد می بایست نام کلی پروژه خود را وارد نمایید و بهتر است که یک رشته با معنا و مرطبت با برنامه خود وارد نمایید.

زمانی که مقدار فیلد Aplication Name را وارد می نمایید، فیلد Project Name نیز بصورت خودکار همان نام را وارد می نماید. توجه داشته باشد که اگر فیلد Aplication Name را با یک رشته فارسی مقداردهی نمودید، برای جلوگیری از خطاها می بایست رشته فارسی تولید شده در فیلد Project Name را با یک رشته معادل انگلیسی جایگزین نمایید.

 

Package Name :  در این فیلد می بایست پکیج پروژه خود را تعیین نمایید که بهتر است آدرس وب سایت خود را بدون درج http  و www و بصورت از آخر به اول و به همراه نام وارد شده در فیلد Project Name وارد نمایید. این نوع مقداردهی به برنامه های مارکت نظیر بازار و Google Paly این امکان را میدهد تا زمانی که نسخه جدیدی از برنامه شما ساخته و آماده منتشر گردید باخبر شده و نسخه جدید برنامه تان را جایگزین نسخه قبلی نماید.

 

Minimum Required SDK : در این لیست انواع API های « نسخه های سیستم عامل اندروید » منتشر شده توسط گوگل وجود دارد. با انتخاب هر کدام از آنها مشخص می نمایید که برنامه تان به چه حداقل نسخه ای از سیستم عامل اندروید نیاز دارد. برای مثال اگر گزینه API 14 را انتخاب نمایید، برنامه تان در سیستم عامل اندروید پایین تر از اندروید 4 یا همان IceCream Sandwich، نصب و اجرا نمی گردد.

اگر از امکانات خاص نسخه های جدیدتر سیستم عامل اندروید استفاده نمی نمایید پیشنهاد می گردد که API 8  را انتخاب نمایید. چرا که با انتخاب این نسخه از سیستم عامل اندروید مطمئن خواهید بود که برنامه شما در تمامی گوشی ها و تبلت ها اجرا خواهد شد.

 

Target SDK : در این لیست انواع API های « نسخه های سیستم عامل اندروید » منتشر شده توسط گوگل وجود دارد. با انتخاب هر کدام از آنها مشخص می نمایید که بالاترین نسخه اندرویدی که برنامه شما می تواند در آن نصب و اجرا گردد کدام نسخه است. بدیهی ست که هرچه سطح API انتخاب شده بالاتر باشد، گوشی ها و تبلت های جدید نیز می توانند از برنامه شما استفاده نمایند.

 

Compile With : در این لیست انواع API های « نسخه های سیستم عامل اندروید » منتشر شده توسط گوگل وجود دارد. با انتخاب هر کدام از آنها مشخص می نمایید که برنامه Eclipse از کدام نسخه از سیستم عامل اندروید برای نوشتن کلاس های

 

برنامه و همچنین کامپایل و تست نمودن آن استفاده نماید.

 

Theme : در این لیست می توانید یک Theme برای برنامه خود انتخاب نمایید.

توجه داشته باشید زمانی که مقدار Compile With را کمتر از API 14 انتخاب نمایید، از این قسمت نمی توانید استفاده نمایید و می بایست از لیست موجود گزینه None رو انتخاب نمایید.

پس از مقداردهی نمودن فیلد های ذکر شده بر روی دکمه Next کلیک می نماییم تا به مرحله بعدی ایجاد پروژه برویم. (شکل 4)

clip_image008[6]

شکل 4

در مرحله بعدی اگر گزینه Create custom lunche icon را انتخاب نمایید، برنامه Eclipse به شما اجازه میدهد تا برای برنامه خود یک عکس جهت ساختن icon انتخاب و یا با استفاده از ابزار های خود برنامه Eclipse، icon مورد نظر خود را ترسیم نمایید. توجه داشته باشید که در صورت عدم انتخاب این گزینه، صفحه مربوطه برای شما باز نخواهد شد.

همچنین اگر گزینه Create Activity را انتخاب نمایید، برنامه Eclipse به شما اجازه میدهد که نام و نوع activity برنامه تان را انتخاب نمایید.

 

این دو گزینه را انتخاب می نماییم و سایر گزینه ها را به حالت پیش فرض خود می گذاریم. حال مجددا بروی دکمه Next کلیک می نماییم تا به مرحله بعدی ایجاد پروژه برویم. (شکل 5)

 

clip_image010[8]

شکل 5

در مرحله بعدی می توانید برای برنامه خود یک icon انتخاب و یا رسم نمایید.

دکمه image برای انتخاب یک عکس ترجیحا با فرمت png به عنوان icon برنامه

دکمه Clipart برای انتخاب یک clipart « شکلک » به عنوان icon برنامه

دکمه Text برای ورود یک نوشته به عنوان icon برنامه

مورد استفاده قرار می گیرند.

ما دکمه image را انتخاب و پس از انتخاب کردن عکس مورد نظر به عنوان icon برنامه بر روی دکمه Next کلیک می نماییم تا به مرحله بعدی ایجاد پروژه برویم. (شکل 6)

 

 

 

 

 

clip_image012[8]

شکل 6

در مرحله بعدی گزینه Create Activity را انتخاب می نماییم و از لیست موجود که بیانگر انتخاب نوع Activity برنامه می باشد گزینه Blank Activity را انتخاب می نماییم. (شکل 7)

clip_image014[8]

شکل 7

در مرحله آخر نیز باید برای activity و layout خود یک نام انتخاب نمایید. ما نام انتخاب شده پیش فرض را قبول کرده و بر روی دکمه Finish کلیک می نماییم تا پروژه مان ساخته شود. (شکل 8)

clip_image016[8]

شکل 8

تا اینجای کار ما پروژه خود را در برنامه Eclipse ایجاد نموده ایم. حال برای ادامه کار می بایست layout برنامه خود را طراحی نماییم.

برای این منظور پنج عدد TextView، چهار عدد EditText و یک عدد Button بر روی layout خود قرار می دهیم. (شکل 9)

 

 

 

fclip_image018

شکل 9

 

همچنین مقادیر لازمه برای نمایش متن TextView ها و Button را در فایل string.xml وارد می نماییم. (شکل 10)

clip_image019[6]

شکل 10

حال در این مرحله می بایست کد های اصلی برنامه را در کلاس MainActivity وارد نماییم.

اولین کدی که می بایست به کلاس MainActivity اضافه نماییم متد onCreate می باشد. این متد یکی از متدهای اصلی برنامه و همچنین چرخه حیات برنامه های اندرویدی می باشد و زمانی که برنامه برای اولین بار اجرا می گردد و یا دستگاه اندرویدی ما از حالت portrait به حالت landscape و یا بر عکس تغییر می کند، این متد فراخوانی می گردد.

یکی از دستورات مهمی که باید به این متد اضافه شود دستور setContentView است. وظیفه این دستور به نمایش در آوردن layout برنامه می باشد.(شکل 11)

clip_image020[6]

شکل 11

مقدار activity_main نام فایل xml مربوط به layout برنامه مان می باشد.

همچنین دستور savedInstanceState حالت جاری layout برنامه را ذخیره می نماید. به این معنا که، فرض نمایید بر روی layout خود یک ابزار EditText قرار داده اید و مقدار نام خودتان را درون آن وارد کرده اید. زمانی که حالت دستگاه اندرویدی خودتون را به landscape و یا portrait تغییر دهید مشاهده می نمایید که مقدار نام شما هنوز در EditText وجود دارد و پاک نشده است. دلیل آن به خاطر استفاده از دستور فوق می باشد.

در مرحله بعدی می بایست کدهایی بنویسیم تا بوسیله ی آنها بتوانیم به ابزار موجود در صفحه نمایش دسترسی پیدا نماییم. (شکل 12)

 

 

 

 

clip_image021

شکل 12

اگر در زمان تعریف یک متغیر آنرا در ابتدای کلاس جاری و قبل از تمامی متدهای خود تعریف نمایید، آن متغیر یک متغیر سراسری محصوب شده و می توانید به راحتی در تمامی متدها و کلاس های کلاس جاری از آن استفاده نمایید.

حال که دسترسی های لازم را ایجاد نموده ایم، در مرحله بعد می بایست داده های وارد شده توسط کاربر را دریافت نموده و بعد از آن به سرور ارسال نماییم. (شکل 13)

 

clip_image023[4]

شکل 13

کدهای بالا را در ادامه کدهای وارد شده قبلی در متد onCreate قرار میدهیم.

در کد بالا، ابتدا با استفاده از خصوصیت setOnClickListener، برای دکمه خود رویداد کلیک را شبیه سازی نموده ایم. در مرحله بعد، با استفاده از کلاس Toast یک پیغام کوچک مبنی بر اینکه در حال وصل شدن به سرور هستیم را به کار نمایش می دهیم.

کلاس Toast کلاسی می باشد که برای نمایش دادن پیغام هایی « با توجه به اتفاقاتی که در طول اجرای برنامه رخ می دهد » به کاربر، مورد استفاده قرار می گیرد. این کلاس سه پارامتر ورودی دارد که مقداردهی کردن هر سه پارامتر الزامی می باشد. پارامتر اول، شئی از نوع Context و پارامتر دوم، پیغام مورد نظر جهت نمایش به کاربر و پارامتر سوم، مدت زمان به نمایش درآمدن کادر پیغام می باشد که می توان از دستور Toast.LENGTH_LONG و یا Toast.LENGTH_SHORT و یا یک عدد صحیح به میلی ثانیه باشد.

هرگاه در برنامه ها نیاز به استفاده از شئی از نوع Context داشته باشیم، می توانیم از دستورات getApplicationContext، getBaseContext و یا ActivityName.this استفاده نماییم.

 

در خط بعدی با استفاده از کلاس Thread یک نخ جدید ایجاد می نماییم و دستورات مربوطه را در آن وارد می نماییم. زمانی که یک Thread اجرا می گردد، تابعی با نام run بصورت خودکار صدا زده می شود. بنابراین این متد را بازنویسی « override » می نماییم و دستورات دریافت داده های وارد شده توسط کاربر، وصل شدن به سرور، ارسال داده ها به سرور و دریافت نتیجه را در این تابع قرار می دهیم.

هرگاه در هنگام نوشتن برنامه های خود بخواهیم عملیاتی را انجام دهیم که از مدت زمان اجرا شدن آن آگاهی نداشته باشیم، می بایست آنرا در داخل یک نخ جدید قرار دهیم. این نخ را می توانیم هم با کلاس Thread و هم با کلاس AsyncroTask، ایجاد نماییم.

دستورات لازمه را در داخل یک بالک try / catch قرار داده ایم تا اگر زمانی با خطایی مواجه گشتیم، برنامه ایجاد خطای force close ننماید.

در داخل بلاک try، با استفاده از متد getText ابزارهای EditText تعریف شده، مقادیر وارد شده توسط کاربر را دریافت نموده و با استفاده از متد encode کلاس URLEncoder، فضاهای خالی احتمالی موجود در بین داده ها را کنترل کرده و خروجی را در متغیرهای منتظر با خودشان، ذخیره نموده ایم.

اگر کاربر در زمان وارد نمودن مقادیر از فاصله « Space » استفاده نماید، برای آنکه مقدار وارد شده را بتوانیم به سرور ارسال نماییم، می بایست آن فاصله ایجاد شده را برای مرورگر قابل فهم نماییم که این کار را با استفاده از کلاس URLEndocer انجام می دهیم.

در ادامه، شی Client که از کلاس HttpClient ساخته شده است و برای عملیات وصل شدن به سرور مورد استفاده قرار می گیرد، را وارد نموده ایم و سپس آدرس سرور مورد نظر خود را که می خواهیم داده های دریافت شده توسط کاربر را به آن ارسال نماییم، ساخته و در متغیری با نام URL که از نوع داده ای String می باشد ذخیره نموده ایم.

سپس یک بلاک try / catch جدید ایجاد نموده ایم و در داخل بلاک try، دستورات لازم جهت ارسال مقادیر به سرور و دریافت نتیجه از سرور را وارد نموده ایم. ابتدا متغیری با نام setServerString تعریف نموده ایم که این متغیر نتیجه بازگشت داده شده از سرور را در خود ذخیره می نماید. سپس با ساختن شئی با نام httpget از کلاس HttpGet و ارسال متغیر URL به عنوان پارامتر ورودی به آن، تعیین نموده ایم که می خواهیم آدرس ساخته شده را بصورت Get به سرور ارسال نماییم و در آخر با استفاده از متد execute شی Client، داده ها را به سرور ارسال کرده و نتیجه بازگشت داده شده توسط سرور را در متغیر SetServerString ذخیره نموده ایم.

دستور threadMsg نیز، تابعی می باشد که خودمان اقدام به نوشتن آن نموده ایم و وظیفه نمایش دادن مقدار ذخیره شده در متغیر SetServerString را دارد. بعد از وارد نمودن تمامی کدها، در بلاک catch نیز، خطاهایی که ممکن است در حین اجرا شدن برنامه ایجاد گردد را در ابزار TextView، نمایش داده ایم.

 

 

در ادامه کدهای تابع threadMsg را وارد می نماییم. (شکل 14)

clip_image024[4]

شکل 14

کدهای بالا را در ادامه دستورات قبلی و بعد از متد run، قرار می دهیم.

برای این متد یک آرگومان ورودی تعریف نموده ایم که نتیجه بازگشت داده شده از سرور « مقدار متغیر SetServerString » می باشد.

در اولین خط از این متد، با استفاده از دستور شرطی if چک نموده ایم که مقدار پارامتر ورودی متد null و یا خالی نباشد. در داخل بدنه دستور if، ابتدا شئی  به نام b و از کلاس Bundele ساخته ایم.

از این کلاس برای انتقال مقادیر بین اکتیویتی ها، کلاس ها و یا توابع استفاده می گردد.

در خط بعدی، یک شی با نام msgObj از کلاس Message ساخته ایم.

بعد از ساختن شی های مورد نیاز، می بایست نتیجه دریافت شده از سرور را به کلاس handler ارسال نماییم تا بتوانیم با استفاده از این کلاس پیغام خوانده شده را به کاربر نمایش دهیم. برای این منظور، با استفاده از متد putString شی b، مقدار پارامتر ورودی تابع را در شی b و با نام کلید message ذخیره می نماییم.

زمانی که از کلاس Thread استفاده می نماییم، سیستم عامل اندروید یک نخ جدید ایجاد کرده و دستورات تعیین شده را در این نخ اجرا می نماید. به دلیل آنکه نخ ایجاد شده، یک نخ مستقل می باشد و به نخ اصلی برنامه « Main Thread » دسترسی ندارد، توانایی به روز رسانی UI برنامه را نیز نخواهد داشت. برای آنکه بتوانیم UI برنامه را با استفاده از نخ ایجاد شده به بوسیله کلاس Thread بروز رسانی نماییم، می بایست از کلاس Handler استفاده و متد handleMessage آنرا دوباره نویسی نماییم.

متد putString دو پارامتر دریافت می نماید. پارامتر اول یک نام از نوع String و جهت مشخص نمودن نام کلید و پارامتر دوم نیز یک متغیر از نوع String و جهت مقداردهی کردن مقدار کلید مشخص شده.

به دلیل آنکه مقداری که می خواهیم در شی b ذخیره نماییم از نوع String می باشد از متد putString استفاده می نماییم.

در خط بعدی با استفاده از متد setData شی msgObj، پیغام ذخیره شده در شی b را که می خواهیم جهت نمایش دادن به کاربر، به کلاس handler ارسال نماییم، مشخص نموده ایم.

متد setData یک پارامتر دریافت می نماید که می بایست از نوع کلاس Bundle باشد.

در خط آخر نیز با استفاده از متد SendMassage شی handler، پیغام ذخیره شده در شی b را به کلاس Handler ارسال می نماییم.

در ادامه نیز کدهای کلاس Handler را وارد می نماییم. (شکل 15)

clip_image025[4]

شکل 15

کدهای بالا را در ادامه کدهای قبلی و بعد از تابع  threadMsg وارد می نماییم.

همان گونه که در بالا ذکر کردیم، برای دسترسی به UI برنامه و بروز رسانی آن، می بایست متدی با نام handleMessage را دوباره نویسی نماییم.

در این متد، ابتدا متغیری با نام aResponse و از نوع داده ای String تعریف نموده ایم و مقدار آنرا برابر با مقدار ذخیره شده در کلید message تعریف شده در تابع threadMsg، قرار داده ایم.

سپس با استفاده از  دستور شرطی if، چک نموده ایم که مقدار متغیر aResponse،null  نباشد. در صورتی که مقدار متغیر null  نباشد، مقدار آنرا در ابزار TextView نمایش می دهیم و در غیر این صورت پیغامی مبنی بر اینکه داده ای از سرور دریافت نشده است را در ابزار TextView، نمایش می دهیم.

در انتها با استفاده از متد start شی background، thread ساخته شده را اجرا می نماییم. (شکل 16)

clip_image026[4]

شکل 16

کد بالا را در ادامه کدهای قبلی و بعد از کلاس  Thread وارد می نماییم.

توجه داشته باشید که چون ما در برنامه خود نیاز به اینترنت داریم، می بایست مجوز دسترسی به آن را در فایل AndroidManifest.xml اضافه نماییم. (شکل 17)

clip_image027

شکل 17

حال اگر برنامه را اجرا نمایید و بر روی دکمه Save On Web کلید نمایید و در صورتی که به اینترنت متصل باشید خروجی شبیه به اشکال زیر خواهید داشت. (شکل 18)

 

 

clip_image029

 

 

clip_image031[8]

شکل 18

 

 

 

 

 

همچنین شما نیز می توانید  سرور دلخواه خود را برای انجام عملیات تست راه اندازی نمایید. برای انجام این عمل کافیست تا برنامه Wamp Server را بر روی سیستم خود نصب نمایید و سپس کد زیر را در یک فایل php قرار دهید و آدرس سرور محلی خودتان را در متغیر URL قرار دهید. (شکل 19)

clip_image032[6]

شکل19

 

در اینجا کار ما به اتمام میرسد. امیدواریم نهایت استفاده از این مقاله را برده باشید.

شاد و پیروز باشید.

 

1394/09/04 18041 1385
رمز عبور : tahlildadeh.com یا www.tahlildade.com
نظرات شما

نظرات خود را ثبت کنید...