[فایل پایه را از اینجا دانلود کنید](https://blog.quera.ir/wp-content/uploads/2018/05/urlInfo_contestant.zip)
در این سوال میخواهیم از شما در تکمیل برنامه زیر کمک بگیریم تا بتوانیم به کمک این برنامه جوابهای برگشتی ```RESTfulAPI``` ها را بررسی کنیم. شکل کلی برنامه بصورت زیر است:
![توضیح تصویر](http://bayanbox.ir/view/3852271260096033683/app.jpg)
در ``EditText`` اول (که با عبارت راهنمای ``enter URL here`` مشخص شده)، یک آدرس که در حقیقت یک ``RESTfulAPI`` است و از متد ``GET`` استفاده میکند، وارد میشود. با لمس دکمه ``SUBMIT``، برنامه یک درخواست به آدرس نوشتهشده ارسال میکند و زمانیکه پاسخ سرور را دریافت کرد، اطلاعات موجود در ``body`` را در ``TextView`` اول، (با متن راهنمای ``put response here``) نمایش میدهد و اطلاعات برگشتی ``header`` با نام ``Quera`` را در ``TextView`` دوم، (با متن راهنمای ``put header contents here``) قرار میدهد.
بعنوان مثال:
آدرس ورودی:
```
http://yourURL.com/myAPI/forAndroid
```
پاسخ دریافتی از سرور در ``body``:
```
this is your body response
```
پاسخ دریافتی از سرور در ``header``:
```
vary: Accept-Encoding,Cookie
x-amz-cf-id: sClUmMWJ6nQzm-1gOnHylGR7NQ9LtAF1FtDifjG3i_2SzsQ2bs-JYQ==
x-cache: Miss from cloudfront
x-content-type-options: nosniff
Quera: this is target header
```
عبارت نمایش داده شده در ``TextView`` اول:
```
this is your body response
```
عبارت نمایش داده شده در ``TextView`` دوم:
```
this is target header
```
# نکات حیاتی
+ برای جلوگیری از بروز خطای ناشی از حجم بالای فایل ارسالی، قبل از ساخت و ارسال فایل ``zip`` دقت کنید که پوشههای ``build`` در این فایل **وجود نداشته باشند**.
+ دقت کنید که به انتهای پاسخی که از سرور در ``body`` یا ``header`` دریافت میکنید، کاراکترهایی مانند ``\n`` و مانند آن **اضافه نکنید**.
+ در ساختار فایل پایه، کلاسی با نام ``BaseURL`` وجود دارد که حاوی فیلد رشتهای ``url`` است؛ دقت کنید که این کلاس در فرآیند تکمیل فایل پایه و رسیدن به خواسته سوال **هیچ نقشی ندارد** و نباید درخواستی به محتویات آن ارسال شود. این فایل صرفا در فرآیند داوری سوال مورد استفاده قرار میگیرد.
+ استفاده از کتابخانه (مانند reftofit, volley و ...) مجاز نمیباشد.
ساختار فایل پایه که برای تکمیل در اختیار شما قرار میگیرد، حاوی مسیر زیر است. شما باید فایلهایی که با علامت (---->) مشخص شدهاند را تغییر دهید و پروژه تغییردادهشده را بعنوان فایل ``zip`` که حاوی مسیر زیر است ارسال کنید:
(تغییر فایلهای **تعیین شده در قسمت پایین** و افزودن فایل جدید به فایل پایه **در پوشه ``main`` از مسیر زیر،** مانعی ندارد)
```
app
│
└───src
└───main
│ AndroidManifest.xml
│
├───java
│ └───android
│ └───quera
│ └───com
│ └───urlinfo
│ BaseURL.java
│ MainActivity.java <----
│
└───res
├───drawable
│ ic_launcher_background.xml
│
├───drawable-v24
│ ic_launcher_foreground.xml
│
├───layout
│ activity_main.xml
└───values
colors.xml
strings.xml
styles.xml
```