# توجه به برقراری اتصال اندروید به سرور

> Source: https://webto.ir/pay-attention-to-connecting-android-to-the-server/
> Author: مدیریت سایت
> Published: 2022-06-06
> Updated: 2022-06-06

وقتی شما می خواهید از طریق اپلیکیشن به سرور وصل شوید و به عبارتی اتصال اندروید به سرور را ایجاد کنید و یک سری اطلاعات از سرور دریافت کنید و در اپلیکیشن نمایش دهید نیاز به یک لینک برای برقراری این ارتباط دارید. این لینک درواقع همان api می باشد. api مربوط به برنامه نویس سمت سرور(php) است و چیزی که لازمه برنامه نویس اندروید بداند نحوه ی گرفتن اطلاعات از api است. برای گرفتن اطلاعات از سرور و اتصال اندروید به سرور، باید از یکی از متدهای get یا post استفاده کنید.تفاوت این دو متد در این است که در متد get ما می توانیم اطلاعات را در ادامه ی api در مرورگر مشاهده کنیم . در واقع برنامه نویس اندروید اطلاعاتی که برنامه نویس سمت سرور نیاز دارد ، در ادامه ی لینک api نوشته و آن را برای سرور میفرستد لذا متد post از امنیت بالاتری برخوردار است. **برقراری ارتباط اندروید با سرور** برای برقراری ارتباط با سرور ابتدا باید کتابخانه ی loopj را به گردل اضافه کرده و پروژه را سینک کنید:

```
implementation 'com.loopj.android:android-async-http:1.4.9'
```

 همچنین باید داخل manifest یک پرمیشن برای اینترنت بدهید:

```

```

 حالا یک کلاس بنام GenerateApi ایجاد کرده و سورس کد زیر را در آن وارد کنید:

```
package general;

import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.AsyncHttpResponseHandler;
import com.loopj.android.http.RequestParams;

import java.io.UnsupportedEncodingException;

import cz.msebera.android.httpclient.Header;
import fragment.ErrorConnectionDialogFragment;
import fragment.LoadingDialogFragment;

public class GenerateApi {

    public static GenerateApi PostMethod(String url, RequestParams re, final ResponseMethode response) {

        AsyncHttpClient client = new AsyncHttpClient();
        client.post(url, re, new AsyncHttpResponseHandler() {

            @Override
            public void onStart() {
                response.onStartMethod();
            }

            @Override
            public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {

                try {
                    String strResponse = new String(responseBody, "UTF-8");
                    response.onSuccessMethod(strResponse);
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                }

            }

            @Override
            public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
                response.onFailureMethod();
            }
        });

        return null;
    }

    public static GenerateApi getMethod(String url, final ResponseMethode response) {

        AsyncHttpClient client = new AsyncHttpClient();
        client.get(url, new AsyncHttpResponseHandler() {
            @Override
            public void onStart() {
                response.onStartMethod();
            }

            @Override
            public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {

                String strResponse = null;
                try {
                    strResponse = new String(responseBody, "UTF-8");
                    response.onSuccessMethod(strResponse );
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                }

            }

            @Override
            public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
                response.onFailureMethod();
            }
        });
        return null;
    }

    public interface ResponseMethode {

        public void onStartMethod();

        public void onSuccessMethod(String response );

        public void onFailureMethod();

    }
```

 ***توضیح کد بالا*** همانطورکه می بینید داخل این کلاس دو متد post و get را با نام های PostMethode و getMethode ایجاد کردیم. ورودی هایی که متد post نیاز دارد: آدرس url : که همان api می باشد. RequestParams: درخواستی که سرور از ما دارد در قالب RequestParams برای آن، می فرستیم. Response: جوابی است که از سمت سرور برای ما برمی گردد. داخل این متد ابتدا یک شی از AsyncHttpClient(کتابخانه ی loopj) ایجاد کرده، سپس مشخص می کنیم که متد ما از چه نوع است (post یا get).که با new کردن AsyncHttpClient، سه متد onStart و onSuccess و onFailure ایمپورت می شوند. onStart: زمانی است که ما به سرور درخواست دادیم و منتظر جواب از سمت سرور هستیم. onSuccess: زمانی است که ارتباط با سرور انجام شده و سرور اطلاعات را در قالب response برای ما بر میگرداند. onFailure: زمانی است که ارتباط با سرور به هر دلیلی برقرار نشده. پس لازم است این سه رویکرد را در قالب سه متد داخل یک interface تعریف کنیم تا از این طریق ،عملکرد اکتیویتی در مقابل ارتباط با سرور را بررسی کنیم:

```
public interface ResponseMethode {

    public void onStartMethod(LoadingDialogFragment loadingDialog);

    public void onSuccessMethod(String response , LoadingDialogFragment loadingDialog);

    public void onFailureMethod(LoadingDialogFragment loadingDialog , ErrorConnectionDialogFragment errorConnectionDialog);

}
```

 حالا داخل متد PostMethode، برای هرکدام از متدهای onStart و onSuccess و onFailure، متدهای مربوطه را از interface فراخوانی می کنیم. توجه داشته باشید جوابی که از سمت سرور برمی گردد در قالب byte می باشد پس در متد onSuccess، با استفاده از خط زیر response را به String تبدیل می کنیم:(لازم است کد آن را داخل try/catch قراردهیم)

```
String strResponse = new String(responseBody, "UTF-8");
```

 متد get را نیز به همین صورت می نویسیم با این تفاوت که دیگر نیازی به RequestParams نداریم و باید در صورت لزوم، RequestParams را در ادامه ی لینک api وارد کنیم. ***کدهای****xml****و جاوای اکتیویتی*** می خواهیم یک اکتیویتی داشته باشیم شامل دو Button. یکی برای گرفتن اطلاعات از طریق متد post و دیگری گرفتن اطلاعات از طریق متد get. یک اکتیویتی ایجاد کنید و در xml آن سورس کد زیر را وارد کنید:

```

```

 داخل کد جاوای اکتیویتی سورس کد زیر را وارد کنید:

```
import android.app.Activity;
import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import general.GenerateApi;
import com.loopj.android.http.RequestParams;

public class TwoActivity extends AppCompatActivity {

    Context context = this;

    Button btn_getDataFromServerPostMethod , btn_getDataFromServerGetMethod;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btn_getDataFromServerPostMethod =findViewById(R.id.btn_getDataFromServerPostMethod);
        btn_getDataFromServerGetMethod = findViewById(R.id.btn_btn_getDataFromServerGetMethod);

        btn_getDataFromServerPostMethod.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                RequestParams re = new RequestParams();
                re.put("serviceProviderId","33");

                GenerateApi.PostMethod "http://...........", re, new GenerateApi.ResponseMethode() {
                    @Override
                    public void onStartMethod() {

                        Toast.makeText(context, "start", Toast.LENGTH_SHORT).show();
                    }

                    @Override
                    public void onSuccessMethod(String response) {
                        Toast.makeText(context, response, Toast.LENGTH_SHORT).show();                    }

                    @Override
                    public void onFailureMethod() {
                        Toast.makeText(context, "Error", Toast.LENGTH_SHORT).show();

                    }
                });

            }
        });

        btn_getDataFromServerGetMethod.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                GenerateApi.getMethod("http://.........", new GenerateApi.ResponseMethode() {
                    @Override
                    public void onStartMethod() {
                        Toast.makeText(context, "start", Toast.LENGTH_SHORT).show();
                    }

                    @Override
                    public void onSuccessMethod(String response) {
                        Toast.makeText(context, response, Toast.LENGTH_SHORT).show();

                    }

                    @Override
                    public void onFailureMethod() {
                        Toast.makeText(context, "error", Toast.LENGTH_SHORT).show();

                    }
                });

            }
        });

    }
```

 ***توضیح کد بالا*** ابتدا context و Button ها را تعریف کردیم، سپس داخل onCreate ، Button ها را findViewBiId کردیم و برای آن ها setonClickListener نوشتیم. می خواهیم وقتی روی این دکمه ها کلیک شد، اطلاعات را از سرور بگیریم و نمایش دهیم. دکمه ی اولی برای گرفتن اطلاعات از طریق متد post و دکمه ی دومی برای گرفتن اطلاعات از طریق متد get می باشد. پس برای دکمه ی اولی لازم است ابتدا یک RequestParams ایجاد کنیم و اطلاعاتی که سرور از ما می خواهد داخل آن put کنیم:

```
RequestParams re = new RequestParams();
re.put("serviceProviderId","33");
```

 چیزی که ما اینجا put کردیم یک مثال فرضیست. حالا از کلاس GenerateApi متد PostMethode را فراخوانی کرده ، url (api مورد نظر) و RequestParams را بهش میدیم و همچنین متد interface را از داخل کلاس GenerateApi فراخوانی می کنیم تا سه متد onStartMethod و onSuccessMethod و onFailureMethod ایمپورت شوند. داخل این سه متد یک Toast ایجاد می کنیم تا اطلاعات مربوطه را به کاربر نشان دهد. برای دکمه ی دومی نیز به همین صورت عمل می کنیم با این تفاوت که دیگه نیاز به تعریف RequestParams نداریم و اگر نیاز باشد اطلاعاتی را برای سرور بفرستیم آن اطلاعات را در ادامه ی لینک api وارد می کنیم. ***خروجی پروژه*** وقتی پرژه را اجرا کنید ابتدا صفحه ی زیر باز می شود: با کلیک بر روی هر دکمه ابتدا پیغام start نمایش داده می شود: سپس اگر به سرور وصل شده باشید response را برمی گرداند: اینکه چطوری response را بخوانیم و قسمت های مختلف آن را بصورت مجزا استخراج کنیم و در اپلیکیشن نمایش دهیم مربوط به مبحث Json ها می شود که ما در این مقاله به آن نپرداختیم. به همین منظور ما دراین پروژه، کل response را گرفتیم و آن را با Toast نمایش دادیم. و در آخر اگر به سرور متصل نشده باشید پیغام error نمایش داده می شود: نویسنده: الهه ابراهیمی

## مقالات مرتبط

 ۰۳ شهریور ۱۴۰۰

# تفاوت آنریل با یونیتی

حتما شما هم جز اون دسته از افرادی هستید که از عاشقان دنیای گیم و و انواع بازی های مبایلی هستید.امروزه کوچیک و بزرگ پیر جوون علاقه ی زیادی به بازی های رایانه ای دارند و با ارتقاع بازی های اندروید و گوشی موبایل این علاقه و دسترسی بیشتر هم شده آیا تا حالا وقتی که مشغول به بازی هستید به این فکر کردید که چه جوری بازی های اندروید ساخته شده؟چه جوری میشه با طراحی و پیاده سازی یه بازی به درآمد رسید ؟یااینکه شما خوتون پر ازایده های جذاب و متنوع هستید در حوزه طراحی بازی های موبایلی ولی به دلیل نبود بستر مناسب یا دسترسی نداشتن به یک متخصص زبده در حوزه طراحی بازی های اندرورد بیخیال ایده تون شده باشیدپیش از همه ی اینا خیلی مهمه آگاهی نسبی از موتور های بازی سازی داشته باشیدبا پیشرفت سریع صنعت گیم و بازی ها ی موبایلی موتور های بازی سازی مختلفی عرضه شده مثلا - Unreal Engine* - Unity* - Cry Engine* - Source Engine* - Id teach* - Creation Engine* - Fox Engine* - Game Maker Studio* - RAGE* - RPG Marker* - Godont* که از مهم ترین و محبوب ترین این موتور های جستجو unity و unreal هستندبا ما تا آخر این مقاله همراه باشید به...
 ادامه مطلب

 ۱۹ اسفند ۱۳۹۹

# مقایسه اپلیکیشن های Native با PWA

استفاده از تلفن همراه سهم بزرگی در زندگی ما دارد. بررسی حداقل چندین بار در روز تلفن های هوشمند برای بسیاری از ما به یک عادت تبدیل شده است. سالها تنها راه ارتباطی کاربران با موبایل با ایجاد یک برنامه تلفن همراه بومی (یا ترکیبی) بود. اما امروزه ، فناوری PWA به یک راه حل جایگزین برای مشاغل از هر اندازه برای تعامل با کاربران فعال تلفن همراه تبدیل شده است. در این مقاله ، ما از تیم دپارتمان طراحی اپلیکیشن پدیده به بررسی و مقایسه اپلیکیشن های Native با PWA پرداخته ایم و تفاوت بین یک برنامه بومی و یک برنامه وب پیشرو را کشف خواهیم کرد. همچنین ، سعی خواهیم کرد به شما کمک کنیم تا بهترین گزینه را برای راه اندازی کسب و کارتان انتخاب کنید . در این مقاله خواهیم آموخت : PWA چیست؟ برنامه بومی چیست؟ طرفهای ضعیف و قوی PWA جوانب مثبت و منفی برنامه های بومی 6 مورد برای مقایسه برنامه وب پیشرو و برنامه های بومی PWA در مقابل برنامه های بومی: کدام یک را انتخاب کنید؟ PWA چیست؟ Google مفهوم PWA...
 ادامه مطلب

 ۱۶ دی ۱۳۹۹

# طراحی اپلیکیشن ماژولار در تهران

# ایده های خلاقانه در زمینه طراحی اپلیکیشن در سر دارید ؟ میخواهید یک اپلیکیشن طراحی کنید ولی زمان زیادی ندارید ؟ میخواهید در کمترین زمان یک اپلیکیشن با کیفیت طراحی کنید ...نگران نباشید ما از تیم تولید محتوا شرکت طراحی اپلیکیشن اندروید دراصفهان پدیده اینجاییم تا شما را با طراحی اپلیکیشن ماژولار در اصفهان و کلا مفهوم ماژول و برنامه نویسی ماژولار را برای شما بیان و موردبررسی قرار میدهیم پس با ما همراه شوید.... مفهوم ماژول چیست ؟ ماژول به اجزای کوچک از یک کلیت بزرگ گفته میشود ، به عبارتی ماژول ها "اجزای" تولید شده در خارج از برنامه هستند. کلمه ی انگلیسی آن Module نوشته میشود و در زبان فارسی، “پیمانه” ترجمه شده است. افراد مختلف از نام های مختلفی برای ماژول ها به عنوان پلاگین ، بسته نرم افزاری ، افزونه ها و غیره استفاده می کنند اما ما از کلمه ی ماژول استفاده میکنم تا شما را با اصطلاحات بین المللی و اصلی برنامه نویسی آشنا کنیم . ماژول ها برنامه را فقط از طریق ورودی های مشخص شده ارتباط می دهند ،اما ایده اصلی همیشه همان ویژگی های مستقل است که در خارج از برنامه...

 ادامه مطلب

تمامی حقوق مادی و معنوی این وب سایت متعلق به شرکت پدیده تجارت جاویدان می باشد.

تمامی مطالب و تصاویر وب سایت تولید شده توسط تیم پدیده بوده واستفاده تجاری، کپی یا بازنشر آن پیگرد قانونی دارد.
