30 تیر 1398 ساعت 07:25

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

Volley یک کتابخانه متن باز برای ارسال و دریافت راحت تره درخواست های http در اندروید می باشد که در سال ۲۰۱۳ توسط گوگل معرفی شد.  در این آموزش قصد داریم با استفاده از کتابخانه volley یک درخواست ارسال و نتیجه آن را که یک JSONObject می باشد دریافت و نمایش دهیم.

Volley یک کتابخانه متن باز برای ارسال و دریافت راحت تره درخواست های http در اندروید می باشد که در سال ۲۰۱۳ توسط گوگل معرفی شد.

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

Volley در ابتدا بخشی از پروژه ی متن باز اندروید بود اما در سال ۲۰۱۷ گوگل اعلام کرد که Volley یک کتابخانه مستقل خواهد شد.

شما می توانید Volley را از این لینک در گیت هاب مشاهده و آن را نیز دریافت نمایید

با استفاده از کتابخانه volley شما میتوانید در خواست های متفاوت زیر را ارسال نمایید. هر کدام از انواع زیر مشخص می کند که پاسخ باید به چه صورت باشد.

برای نمونه یک درخواست StringRequest انتظار یک پاسخ string را از سرور دارد. دیگر نمونه های درخواست های volley  بصورت زیر می باشد:

۱− StringRequest

2- JSONObject

3- JSONArray

4- Image

 

 در این آموزش قصد داریم با استفاده از کتابخانه volley یک درخواست ارسال و نتیجه آن را که یک JSONObject می باشد دریافت و نمایش دهیم.

 

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

 

ابتدا کتابخانه volley را در پروژه ی اندروید خود اضاف نمایید. برای انکار کد زیر را به gradle پروژه ی خود اضاف نمایید و سپس بر روی sync  ;gd; ;kdn

compile 'com.android.volley:volley:1.0.0'

 

کد زیر را به فایل activity_main.xml خود اضاف نمایید. (کدهای پیش فرض این فایل را پاک کنید)

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/coordinator_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#e3eff7"
    >
    <Button
        android:id="@+id/btn_do"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Request JSON Object From URL"
        android:layout_margin="25dp"
        android:layout_gravity="top|center_horizontal"
        />
    <TextView
        android:id="@+id/tv"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layout_anchor="@id/btn_do"
        app:layout_anchorGravity="bottom"
        android:layout_gravity="bottom|center_horizontal"
        android:layout_margin="15dp"
        android:textSize="22sp"
        android:fontFamily="sans-serif-condensed"
        />
</android.support.design.widget.CoordinatorLayout>

 

فایل MainActivity.java را نیز بصورت زیر تغییر دهید:

package com.cfsuman.me.androidcodesnippets;

import android.app.Activity;
import android.content.Context;
import android.support.design.widget.CoordinatorLayout;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.Volley;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;


public class MainActivity extends AppCompatActivity {
    private Context mContext;
    private Activity mActivity;

    private CoordinatorLayout mCLayout;
    private Button mButtonDo;
    private TextView mTextView;
    private String mJSONURLString = "http://pastebin.com/raw/2bW31yqa";


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

        // Get the application context
        mContext = getApplicationContext();
        mActivity = MainActivity.this;

        // Get the widget reference from XML layout
        mCLayout = (CoordinatorLayout) findViewById(R.id.coordinator_layout);
        mButtonDo = (Button) findViewById(R.id.btn_do);
        mTextView = (TextView) findViewById(R.id.tv);

        // Set a click listener for button widget
        mButtonDo.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // Empty the TextView
                mTextView.setText("");

                // Initialize a new RequestQueue instance
                RequestQueue requestQueue = Volley.newRequestQueue(mContext);

                // Initialize a new JsonObjectRequest instance
                JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(
                        Request.Method.GET,
                        mJSONURLString,
                        null,
                        new Response.Listener<JSONObject>() {
                            @Override
                            public void onResponse(JSONObject response) {
                                // Do something with response
                                //mTextView.setText(response.toString());

                                // Process the JSON
                                try{
                                    // Get the JSON array
                                    JSONArray array = response.getJSONArray("students");

                                    // Loop through the array elements
                                    for(int i=0;i<array.length();i++){
                                        // Get current json object
                                        JSONObject student = array.getJSONObject(i);

                                        // Get the current student (json object) data
                                        String firstName = student.getString("firstname");
                                        String lastName = student.getString("lastname");
                                        String age = student.getString("age");

                                        // Display the formatted json data in text view
                                        mTextView.append(firstName +" " + lastName +"\nage : " + age);
                                        mTextView.append("\n\n");
                                    }
                                }catch (JSONException e){
                                    e.printStackTrace();
                                }
                            }
                        },
                        new Response.ErrorListener(){
                            @Override
                            public void onErrorResponse(VolleyError error){
                                // Do something when error occurred
                                Snackbar.make(
                                        mCLayout,
                                        "Error.",
                                        Snackbar.LENGTH_LONG
                                ).show();
                            }
                        }
                );

                // Add JsonObjectRequest to the RequestQueue
                requestQueue.add(jsonObjectRequest);
            }
        });
    }
}

 

اگر به کد بالا دقت کنید متوجه خواهید شد که ما یک button و یک textview داریم

با کلیک بر روی دکمه یک درخواست volley به سرور ارسال و JsonObject را دریافت و سپس در تابع onResponse آن را در یک textarea نمایش می دهد.

 

امیدوارم از این مطلب لذت برده باشید.

در صورتی که سوال یا پیشنهادی دارید از بخش نظرات ارسال فرمایید.

1104 admin
نظرات

برای اطلاع از پاسخ به نظر شما می توانید ایمیل یا شماره موبایل خود را وارد نمایید. *

ایمیل و شماره موبایل شما کاملا مخفی خواهد ماند و در سایت نمایش داده نخواهد شد. *

پاسخ به نظر
اگر نظری برای این مطلب ارسال شد از طریق ایمیل مرا اطلاع بده!

هنوز برای این مطلب نظری ارسال نشده است!
0