- آموزش برنامه نویسی Android قسمت اول: تاریخچه سیستم عامل اندروید
- آموزش برنامه نویسی Android قسمت دوم: آشنایی با اصطلاحات و نصب محیط توسعه
- آموزش برنامه نویسی Android قسمت سوم: اجرای اولین برنامه Hello World
- آموزش برنامه نویسی Android قسمت چهارم: شروع طراحی رابط کاربری
- آموزش برنامه نویسی Android قسمت پنجم: طراحی LinearLayout
- آموزش برنامه نویسی Android قسمت ششم: طراحی صفحه یک ماشین حساب
- آموزش برنامه نویسی Android قسمت هفتم: طراحی RelativeLayout
- آموزش برنامه نویسی Android قسمت هشتم: ساخت لیست با ListView
- آموزش برنامه نویسی Android قسمت نهم: شروع آموزش زبان Java
- آموزش برنامه نویسی Android قسمت دهم: محاسبات ریاضی و شرط ها
- آموزش برنامه نویسی Android قسمت یازدهم: حلقه ها و آرایه ها
- آموزش برنامه نویسی Android قسمت دوازدهم: شی گرایی بخش اول
- آموزش برنامه نویسی Android قسمت سیزدهم: شی گرایی بخش دوم
- آموزش برنامه نویسی Android قسمت چهاردهم: پروژه نرم افزار مبدل واحد
- آموزش برنامه نویسی Android قسمت پانزدهم: Activity ها را بیشتر بشناسید
- آموزش برنامه نویسی Android قسمت شانزدهم: چرخه حیات اکتیویتی
- آموزش برنامه نویسی Android قسمت هفدهم: Fragment ها
- آموزش برنامه نویسی Android قسمت هجدهم: ساختار داده ها و Data Model ها
- آموزش برنامه نویسی Android قسمت نوزدهم: Shared Preferences
- آموزش برنامه نویسی Android قسمت بیستم: ارتباط با سرور برای دریافت اطلاعات بخش اول
- آموزش برنامه نویسی Android قسمت بیست و یکم: ارتباط با سرور برای دریافت اطلاعات بخش دوم
- آموزش برنامه نویسی Android قسمت بیست و دوم: ارسال اطلاعات به سرور
- آموزش برنامه نویسی Android قسمت بیست و سوم: اندروید و پایگاه داده بخش اول
- آموزش برنامه نویسی Android قسمت بیست و چهارم: اندروید و پایگاه داده بخش دوم
- آموزش برنامه نویسی Android قسمت بیست و پنجم: BroadcastReceiver
در این قسمت قصد داریم ارسال اطلاعات به سرور را با هم تمرین کنیم.
ارسال اطلاعات به سرور از اهمیت بسیار بالایی برخوردار است، گاهی نیاز پیدا میکنید که اطلاعات ثبت نامی کاربر را در یک سرور ذخیره کنید و یا از عملکرد کاربر در نرم افزار خود گزارش تهیه کنید.
اگر قسمتهای قبلی را به خودی آموخته باشید این قسمت نیز برایتان سخت نخواهد بود.
یک کلاس به نام APISendingData ایجاد میکنیم و سورس زیر را در آن قرار میدهیم:
public class APISendingData {
private Context context;
public APISendingData(Context context) {
this.context = context;
}
public void signUp(JSONObject requestJsonObject, final OnSignupComplate onSignupComplate){
JsonObjectRequest request= new JsonObjectRequest(Request.Method.POST, "http://192.168.1.102/receiveData.php", requestJsonObject, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
boolean success= response.getBoolean("success");
onSignupComplate.onSignUp(success);
} catch (JSONException e) {
onSignupComplate.onSignUp(false);
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
onSignupComplate.onSignUp(false);
}
});
request.setRetryPolicy(new DefaultRetryPolicy(18000, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
Volley.newRequestQueue(context).add(request);
}
public interface OnSignupComplate{
void onSignUp(boolean success);
}
}
سطر 3: متغیری برای Context ایجاد کردیم.
سطر 5: یک سازنده ایجاد کردیم.
سطر 9: متد signUp را برای عضویت کاربر در سمت سرور ایجاد میکنیم. ورودیهای این متد JSONObject و interfaceای به نام OnSignupComplate میباشد.
سطر 10: در این سطر یک JsonObjectRequest ایجاد کردیم و نام آن را request قرار دادیم. ورودی های JsonObjectRequest عبارتند از:
ورودی اول: متد POST
ورودی دوم: آدرس سمت سرور،
ورودی سوم: اطلاعات ارسالی به سمت سرور
ورودی چهارم: Response.Listener که اطلاعات دریافتی از سمت سرور را به ما باز میگرداند و به شرط صحیح بودن عملیات آنها را وارد متد onResponse میکند.
ورودی پنجم: Response.ErrorListener که در صورت شکست عملیات صدا زده میشود.
سطر 14: رشته jsonای که از سمت سرور دریافت شده در اینجا باز شده و از آن آیتم success تفسیر میشود و در متغیری با همین نام ذخیره میشود. و در نهایت برای interface این کلاس یعنی OnSignupComplate و متد onSignUp ارسال میشود.
سطر 16: اگر عملیات مرحله قبل موفقیت آمیز نبود مقدار false به onSignUp ارسال میشود.
سطر 21: در صورت شکست اطلاعات در این بخش مقدار false به onSignUp ارسال میگردد.
سطر 28: یک request ایجاد میکنیم تا تنظیمات ارسال اطلاعات برای سرور را انجام دهیم. با setRetryPolicy میخواهیم تنظیماتی را اعمال کنیم که از خطاهای احتمالی جلوگیری کنیم. درون setRetryPolicy یک شی از نوع DefaultRetryPolicy قرار میدهیم که سه ورودی دارد:
ورودی اول میزان زمان انتظار برای دریافت نتیجه از سرور است که بدلیل کند بودن اینترنت در ایران این زمان را روی 18000 تنظیم میکنیم که معادل 18 ثانیه است.
ورودی دوم مشخص میکند که در صورت شکست اطلاعات هیچ عملی انجام ندهد که این مقدار را روی پیش فرض قرار میدهیم.
ورودی سوم زمان تلاش مجدد بعد از TimeOut را مشخص میکند که در اینجا این مقدار را نیز بر روی پیش فرض قرار میدهیم.
سطر 29: عملیات را با کمک volley انجام میدهیم.
در سمت سرور یک سورس ساده به زبان PHP مانند زیر ایجاد میکنیم:
<?php
$json= file_get_contents('php://input');
file_put_contents("json.txt", $json);
echo json_encode(array('success' => true));
?>
در سطر دوم اطلاعات به صورت json دریافت میشوند و در سطر سوم این اطلاعات در یک فایل به نام json.txt ذخیره میشوند.
در سطر چهارم با json_encode یک رشته json به صورت {"success":true}
نمایش داده میشود.
در لایه نمایش اصلی پروژه خود یک کلید با شناسه btn ایجاد میکنیم. کلید btn را در کلاس MainActivity مانند زیر مسئول ارسال اطلاعات به سرور میکنیم:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn = (Button) findViewById(R.id.button);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
APISendingData apiSendingData= new APISendingData(MainActivity.this);
JSONObject requestJsonObject= new JSONObject();
try {
requestJsonObject.put("name", "alireza");
requestJsonObject.put("last_name", "mohseni");
requestJsonObject.put("user_name", "alireza123");
requestJsonObject.put("password", "admin123");
apiSendingData.signUp(requestJsonObject, new APISendingData.OnSignupComplate() {
@Override
public void onSignUp(boolean success) {
if(success == true){
Toast.makeText(MainActivity.this, "اطلاعات با موفقیت ارسال شد", Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(MainActivity.this, "اطلاعات ارسال نشد", Toast.LENGTH_SHORT).show();
}
}
});
} catch (JSONException e) {
e.printStackTrace();
}
}
});
}
سطر 10: یک شی از روی APISendingData به نام apiSendingData ایجاد میکنیم.
سطر 11: یک شی از روی JSONObject به نام requestJsonObject ایجاد میکنیم.
سطر 13 تا 16: کلیه آیتمهای درون json را به شی requestJsonObject نسبت میدهیم.
سطر 17: کلیه اطلاعات requestJsonObject را به کمک apiSendingData و متد signUp ارسال میکنیم.
سطرهای 20 تا 24: در صورت موفق بودن عملیات و دریافت مقدار true یک پیام مبنی بر موفقیت آمیز بودن عملیات و در غیر این صورت پیام برای اعلام شکست عملیات چاپ میشود.
امیدوارم این آموزش برای شما مفید بوده باشد.
تگ ها: android / اندرویدandroid studio