Making API Calls using Volley Library in Android (original) (raw)
Last Updated : 16 Aug, 2022
Volley is an HTTP library that’s used for caching and making a network request in Android applications. It is an HTTP library that makes networking for Android apps easier and most importantly, faster. API stands for Application Programming Interface. It is a way for two or more computer programs to communicate with each other. By using its products or services communicate with other products and services without having to know how they’re implemented.
Note: This Android article covered in both Java and Kotlin languages.
Step By Step Implementation:
Step 1: Create a New Project in Android Studio
To create a new project in Android Studio please refer to [How to Create/Start a New Project in Android Studio](Create a New Project in Android Studio To create a new project in Android Studio please refer to How to Create/Start a New Project in Android Studio. The code for that has been given in both Java and Kotlin Programming Language for Android.). The code for that has been given in both Java and Kotlin Programming Language for Android.
Step 2: Add internet permission to your app
Go to app > manifest.xml file and add the internet permission. Below is the code for the manifest file.
XML `
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.GFGvolleyApiCall">
<activity
android:name=".MainActivity"
android:exported="true"
tools:ignore="WrongManifestParent">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<!-- adding internet permission -->
<uses-permission android:name="android.permission.INTERNET"/>
`
Step 3: Add the Volley dependency to build.gradle (Module : app ) file
Go to app > Gradle Scripts > build.gradle (Module : app) file and add the dependency. Below is the code for the build.gradle file.
plugins {
id 'com.android.application'
}android {
compileSdk 31defaultConfig {
applicationId "com.example.gfgvolleyapicall"
minSdk 21
targetSdk 31
versionCode 1
versionName "1.0"testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}dependencies {
implementation 'androidx.appcompat:appcompat:1.4.2'
implementation 'com.google.android.material:material:1.6.1'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'implementation 'com.android.volley:volley:1.2.1' // adding volley dependency
}
Step 4: Working with activity_main.xml
Navigate to the app > res > layout > activity_main.xml and add the below code to that file. Below is the code for the activity_main.xml file.
XML `
<androidx.constraintlayout.widget.ConstraintLayout 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" tools:context=".MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
android:backgroundTint="@color/white"
app:layout_constraintTop_toTopOf="parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textColor="@color/purple_700"
android:textSize="20sp"
android:textAlignment="center"
android:text="welcome to geeks for geeks" />
</LinearLayout>
</LinearLayout></androidx.constraintlayout.widget.ConstraintLayout>
`
Step 5: Working with the MainActivity File
Go to the MainActivity File and refer to the following code. Below is the code for the MainActivity File. Comments are added inside the code to understand the code in more detail.
Java `
package com.example.gfgvolleyapicall;
import static android.content.ContentValues.TAG;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle; import android.util.Log; import android.widget.Toast;
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.StringRequest; import com.android.volley.toolbox.Volley;
public class MainActivity extends AppCompatActivity { private RequestQueue mRequestQueue; private StringRequest mStringRequest; private String url = "https://run.mocky.io/v3/85cf9aaf-aa4f-41bf-b10c-308f032f7ccc";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getData();
}
private void getData() {
// RequestQueue initialized
mRequestQueue = Volley.newRequestQueue(this);
// String Request initialized
mStringRequest = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Toast.makeText(getApplicationContext(), "Response :" + response.toString(), Toast.LENGTH_LONG).show();//display the response on screen
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.i(TAG, "Error :" + error.toString());
}
});
mRequestQueue.add(mStringRequest);
}}
Kotlin
package com.example.gfgvolleyapicall;
import static android.content.ContentValues.TAG;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle; import android.util.Log; import android.widget.Toast;
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.StringRequest; import com.android.volley.toolbox.Volley;
class MainActivity : AppCompatActivity() { private var mRequestQueue: RequestQueue? = null private var mStringRequest: StringRequest? = null private val url = "https://run.mocky.io/v3/85cf9aaf-aa4f-41bf-b10c-308f032f7ccc" override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) getData() }
private fun getData() {
// RequestQueue initialized
mRequestQueue = Volley.newRequestQueue(this)
// String Request initialized
mStringRequest = StringRequest(Request.Method.GET, url, object : Listener<String?>() {
// display the response on screen
fun onResponse(response: String) {
Toast.makeText(applicationContext, "Response :$response", Toast.LENGTH_LONG)
.show()
}
}, object : ErrorListener() {
fun onErrorResponse(error: VolleyError) {
Log.i(ContentValues.TAG, "Error :" + error.toString())
}
})
mRequestQueue.add(mStringRequest)
}}
`
Output: