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

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

کتابخانه Volley در جاوا چیه؟

بله ! سوال اولی که برای شما مطرح هست. اینکه که کتابخانه والی در جاوا برای چه مواردی مورد استفاده قرار میگیرد. ما در مبحث رتروفیت یک گریز کوتاهی برای مبحث volley در جاوا داشتیم .ولی امروز میخواهیم این مبحث را به طور کامل برای شما عزیزان آموزش دهیم.  در حین آموزش یک مثال ساده یا به نوعی یک پروژه کوچک نیز با هم کار خواهیم کرد تا نحوی کار با کتابخانه volley در جاوا را برای شما عزیزان به صورت کامل یاد دهیم .

کتابخانه VOLLEY در جاوا

کتابخانه VOLLEY چیست ؟ و طرز استفاده از آن به چه شکلی است ؟

مقاله های پر بازدید : همه چیز درمورد زبان برنامه نویسی کاتلین .

 

میرسیم به سوال اصلی ، و اونم اینه که کتابخانه والی چیه ؟. اول اینکه این کتابخانه در سال 2013 توسط Google IO ارئه شده است و هدف از کتابخانه VOLLEY این هست که ما شبکه کردن اپلیکیشن های اندروید رو خیلی راحتر و به خصوص ساده تر کنیم. تا استفاده از آن برای برنامه نویسان برنامه های اندرویدی راحتر باشد .

همان طور که شاید بدانید ما برای اینکه پاسخ های Api های شبکه رو دریافت کنیم .و به آن صورت که مایل هستیم نمایش دهیم باید از یکسری کد های Async Task استفاده کنیم . و یکسری کار های دیگر را نیز باید انجام میدادیم . تا اون هدف موردن نظر ما یعنی دریافت اطلاعات از یک سروری میسر میشد . من خودم به عنوان برنانه نویس اندروید بار ها از این کد های Async Task استفاده کرده ام یکم پیچیده تر و یه جورایی کسل کننده میباشد . این جا بود که کتابخانه والی در جاوا را جایگزین Asycn Task شد .

پیاده سازی کتابخانه والی در برنامه نویسی اندروید

 میرسیم به مرحله جذاب و شیرین استفاده از والی در برنامه نویسی خودمون ، من قصد یک پروژه کوچک با عنوان یک فرم ثبت نام کوچک ایجاد کنم که در آن اطلاعات لازم را از کاربرانمون بگیریم و با استفاده از کتابخانه VOLLEY در جاوا به سرور بفرستیم . و اون طرف نیز من از یک هاست واقعی استفاده میکنم . لازم به ذکر هست که ما در قسمت سمت سرور خودمون اندکی از کد های PHP نیز استفاده میکنیم تا اطلاعاتی را که از بخش برنامه اندرویدی خودمون دریافت میکنیم را به کمک آن در دیتابیس خودمون ذخیره کنیم .

مرحله اول :

ابتدا یک پروژه ایجاد کنید و اسم آن را به صورت دلخواه قرار دهید . بعدا ایجاد پروژه و برای اینکه ما از کتابخانه VOLLEY در جاوا استفاده کنیم . باید اون کتابخانه را به پروژه خودمون اضافه کنیم . برای این کار وارد بخش build.gradle(Module)  شوید و کد زیرا در قسمت dependencies وارد کنید .

 implementation 'com.mcxiaoke.volley:library:1.0.19'

و در ادامه چون که ما باید اطلاعات را به سرور خودمون بفرستیم باید مجوز استفاده از اینترنت را در اندروید استودیو و در بخش AndroidMainifest.xml وارد سازیم کد این قسمت نیز به مانند زیر میباشد .

<uses-permission android:name="android.permission.INTERNET"></uses-permission>

الان اماده هستیم تا کدنویسی رو ادامه دهیم . ابتدا ما برای این که یک فرم ثبت نام ساده درست کنیم . اطلاعاتی اعمم از نام و نام خانوادگی و شماره تلفن از کاربر بگیریم .  به قسمت سمت سرور ارسال کنیم تا این اطلاعات در بخش دیتابیس ما ذخیره شود . برای این قسمت یه ui ساده طراحی کردیم چون هدفم ما طراحی فرم login نیست و صرفا برای فهمیدن طرز کار کتابخانه والی در جاوا میباشد . کد های این قسمت به مانند زیر می باشد .

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="#CDC4C4"
    tools:context=".MainActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="25dp"
        android:orientation="vertical">


        <EditText
            android:id="@+id/Id_name"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:layout_margin="10dp"
            android:layout_marginTop="10dp"
            android:background="@drawable/background_edittext"
            android:hint="نام "
            android:padding="8dp"
            android:textColor="#FFFFFF"
            android:textColorHint="#FFFFFF"
            android:textSize="16dp"

            />

        <EditText
            android:id="@+id/Id_lastname"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:layout_margin="10dp"
            android:layout_marginTop="5dp"
            android:background="@drawable/background_edittext"
            android:hint="نام خانوادگی "
            android:padding="8dp"
            android:textColor="#FFFFFF"
            android:textColorHint="#FFFFFF"
            android:textSize="16dp" />

        <EditText
            android:id="@+id/Id_phonenumber"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:layout_margin="10dp"
            android:layout_marginTop="5dp"
            android:background="@drawable/background_edittext"
            android:hint="شماره تلفن"
            android:padding="8dp"
            android:textColor="#FFFFFF"
            android:textColorHint="#FFFFFF"
            android:textSize="16dp" />

    </LinearLayout>

    <Button
        android:id="@+id/id_btn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="25dp"
        android:text="ثبت"
        android:textColor="@color/white"></Button>

</LinearLayout>
قدم دوم :

حالا میریم سراغ قسمت کدنویسی بخش اکتیویتی ، فرم ما این گونه هست که ما با دریافت اطلاعات و زدن دکمه ثبت باید یک درخواست StringRequest والی ایجاد کنیم . ما در این بخش باید URL  کلاس PHP که در سمت سرور اطلاعات را دریافت میکند را نیز قرار دهیم و اینکه چون اطلاعات را به سمت سرور میفرستیم از متد POST استفاده میکنیم. در سمت سرور نیز با متد GET این اطلاعات را دریافت میکنیم .

 

مقاله های پر بازدید : همه چیز درباره ی اندروید NDK :

 

در هنگام ارسال هم به کمک HashMap و با قرار دادن کلید برای هر پارامتری به سمت سرور و به آن URL مورد نظر ارسال میکنیم.  همچنین ما در این متد به کمک کلاس MySingleton این درخواست را در صف انتظار قرار میدهیم . ابتدا شما یک کلاس ایجاد کنید و اسم MySingleton  را برای آن قرار دهید . کد های این کلاس به شکل زیر میباشد .

package com.example.musicplayer;

import android.content.Context;

import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.toolbox.Volley;


public class MySingleton {
    private static MySingleton mySingleton;
    private RequestQueue requestQueue;
    private static Context Mycontext;

    private MySingleton(Context context)
    {
        this.Mycontext=context;
        this.requestQueue=getRequestQueue();

    }
    public static synchronized MySingleton getInstance(Context context)
    {
        if(mySingleton==null)
        {
            mySingleton=new MySingleton(context);
        }
        return  mySingleton;
    }

    public RequestQueue getRequestQueue(){
        if (requestQueue == null)
        {
            requestQueue= Volley.newRequestQueue(Mycontext.getApplicationContext());
        }
        return  requestQueue;
    }

    public <T> void addtoRequestQueue (Request<T> request)
    {

        requestQueue.add(request);
    }


}

بعد از ایجاد کلاس بالا ، حالا نوبت کد نویسی بخش اکتیویتی هست . کد های این قسمت همانطور که توضیح دادم به صورت زیر میباشد .

مقالات پر طرفدار: همه چیز درباره ی هش مپ ها .

 

package com.example.musicplayer;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;

import java.util.HashMap;
import java.util.Map;

public class MainActivity extends AppCompatActivity {

    String Server_Url = "https://code-it.ir/Rigster_Student.php";
    EditText name, lastname, PhoneNumber;
    Button submit;

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


        name = findViewById(R.id.Id_name);
        lastname = findViewById(R.id.Id_lastname);
        submit = findViewById(R.id.id_btn);
        PhoneNumber = findViewById(R.id.Id_phonenumber);

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


                StringRequest stringrequest = new StringRequest(Request.Method.POST, Server_Url, new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        if (response.toString().trim().equals("Login")) {
                            PhoneNumber.setText("");
                            name.setText("");
                            lastname.setText("");
                            Toast.makeText(MainActivity.this, "ثبت شد", Toast.LENGTH_LONG).show();
                        } else if (response.toString().equals("NoLogin")) {
                            Toast.makeText(MainActivity.this, "ثبت ناموفق !!", Toast.LENGTH_LONG).show();

                        }


                    }
                }, new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                    }
                }
                ) {
                    @Override
                    protected Map<String, String> getParams() throws AuthFailureError {
                        Map<String, String> params = new HashMap<String, String>();
                        params.put("Name", name.getText().toString());
                        params.put("lastName", lastname.getText().toString());
                        params.put("PhoneNumber", PhoneNumber.getText().toString());
                        return params;
                    }
                };
                MySingleton.getInstance(MainActivity.this).addtoRequestQueue(stringrequest);
            }
        });


    }
}

در اینجا کار ما با قسمت اندروید تمام میشود . ما تمامی کار ها را به صورت کامل انجام دادیم و داده ها را به سمت سرور ارسال کردیم . کد PHP سمت سرور که داده های ما را میگیرد. و با کمک کد های SQL  داده ها را در دیتابیس ذخیره میکند این کد به صورت زیر میباشد .

<?php

$connection = mysqli_connect("localhost", "اسم user ", "پسورد دیتابیس", "اسم دیتابیس");
//سازگاری با حروف فارسی
    $sql = "SET NAMES 'utf8'";
    $connection->query($sql);

$Name = (isset($_POST['Name']) ? $_POST['Name'] : '');
$lastName = (isset($_POST['lastName']) ? $_POST['lastName'] : '');
$PhoneNumber = (isset($_POST['PhoneNumber']) ? $_POST['PhoneNumber'] : '');


  $sqlquery ="INSERT INTO `Register` (`name`,`lastname`,`PhoneNumber`)
        VALUES ('$Name','$lastName','$PhoneNumber')"; 
    //   $last_id = $conn->lastInsertId();    
      
if (mysqli_query($connection, $sqlquery)) {
                  echo "Login";    
            
      }
else {
    echo "NoLogin";
}



mysqli_close($connection);
?>

    
           

در اینجا کار ما به اتمام رسید و ما نحوی کار با کتابخانه VOLLEY در جاوا را یادگرفتیم و فهمیدیم که کتابخانه والی در جاوا به چه میزانی کار مارا در ارتباط با سرور راحتر میکند. و اما خروجی به صورت زیر میباشد .

برای امتیاز به این نوشته کلیک کنید!
[کل: 2 میانگین: 5]
اشتراک‌گذاری

فرشید حبیبی هستم . برنامه نویس موبایل، سئو و وردپرس همچنین علاقه مند به تولید محتوا در زمینه برنامه نویسی و تکنولوژی های روز دنیا.

یک نظر

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *