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 نمایش می دهد.
امیدوارم از این مطلب لذت برده باشید.
در صورتی که سوال یا پیشنهادی دارید از بخش نظرات ارسال فرمایید.
برای اطلاع از پاسخ به نظر شما می توانید ایمیل یا شماره موبایل خود را وارد نمایید. *
ایمیل و شماره موبایل شما کاملا مخفی خواهد ماند و در سایت نمایش داده نخواهد شد. *
هنوز برای این مطلب نظری ارسال نشده است!