How to Post Data to API using Retrofit in Android?
Last Updated :
06 Jan, 2025
We have seen reading data from API in our Android app in Android Studio. For reading data from API, we use GET request to read our data which is in JSON format. In this article, we will take a look at adding data to REST API in our Android App in Android Studio.
What we are going to build in this article?
We will be building a simple application in which we will be adding data to our REST API using the Retrofit library with POST Request. We will add the data through edit text fields and we will verify through response code that our data has been added to the API or not. When we added data to our API we will get to see 201 as a response code. 201 response code means data has been added to our API. A sample video is given below to get an idea about what we are going to do in this article. Note that we are going to implement this project using the Java language.
Data can be added to API in different formats such as XML Form and JSON. Most of the APIs post their data in JSON format. So we will also be posting our data to our API in the form of the JSON object.
Step by Step Implementation
Step 1: Create a New Project
To create a new project in Android Studio please refer to How to Create/Start a New Project in Android Studio. Note that select Java as the programming language.
Step 2: Add the below dependency in your build.gradle file
Navigate to the Gradle Scripts > build.gradle(Module:app) and add the below dependency in the dependencies section.
// below dependency for using the retrofit
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.5.0'
After adding this dependency sync your project and now move towards the AndroidManifest.xml part.
Step 3: Adding permissions to the internet in the AndroidManifest.xml file
Navigate to the app > AndroidManifest.xml and add the below code to it.
XML
<!--permissions for INTERNET-->
<uses-permission android:name="android.permission.INTERNET"/>
Step 4: Working with the activity_main.xml file
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
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<!--edit text field for adding name-->
<EditText
android:id="@+id/idEdtName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:layout_marginTop="40dp"
android:hint="Enter your name" />
<!--edit text for adding job-->
<EditText
android:id="@+id/idEdtJob"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:hint="Enter your job" />
<!--button for adding data-->
<Button
android:id="@+id/idBtnPost"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:text="Send Data to API"
android:textAllCaps="false" />
<!--text view for displaying our API response-->
<TextView
android:id="@+id/idTVResponse"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:gravity="center_horizontal"
android:text="Response"
android:textAlignment="center"
android:textSize="15sp" />
<!--progress bar for loading -->
<ProgressBar
android:id="@+id/idLoadingPB"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:visibility="gone" />
</LinearLayout>
Step 5: Creating a modal class for storing our data
Navigate to the app > java > your app's package name > Right-click on it > New > Java class and name it as DataModal and add the below code to it. Comments are added inside the code to understand the code in more detail.
Java
public class DataModal {
// string variables for our name and job
private String name;
private String job;
public DataModal(String name, String job) {
this.name = name;
this.job = job;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
}
Step 6: Creating an Interface class for our API Call
Navigate to the app > java > your app’s package name > Right-click on it > New > Java class select it as Interface and name the file as RetrofitAPI and add below code to it. Comments are added inside the code to understand the code in more detail.
Java
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.POST;
public interface RetrofitAPI {
// as we are making a post request to post a data
// so we are annotating it with post
// and along with that we are passing a parameter as users
@POST("users")
//on below line we are creating a method to post our data.
Call<DataModal> createPost(@Body DataModal dataModal);
}
Step 7: Working with the MainActivity.java file
Go to the MainActivity.java file and refer to the following code. Below is the code for the MainActivity.java file. Comments are added inside the code to understand the code in more detail.
Java
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
public class MainActivity extends AppCompatActivity {
// creating variables for our edittext,
// button, textview and progressbar.
private EditText nameEdt, jobEdt;
private Button postDataBtn;
private TextView responseTV;
private ProgressBar loadingPB;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// initializing our views
nameEdt = findViewById(R.id.idEdtName);
jobEdt = findViewById(R.id.idEdtJob);
postDataBtn = findViewById(R.id.idBtnPost);
responseTV = findViewById(R.id.idTVResponse);
loadingPB = findViewById(R.id.idLoadingPB);
// adding on click listener to our button.
postDataBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// validating if the text field is empty or not.
if (nameEdt.getText().toString().isEmpty() && jobEdt.getText().toString().isEmpty()) {
Toast.makeText(MainActivity.this, "Please enter both the values", Toast.LENGTH_SHORT).show();
return;
}
// calling a method to post the data and passing our name and job.
postData(nameEdt.getText().toString(), jobEdt.getText().toString());
}
});
}
private void postData(String name, String job) {
// below line is for displaying our progress bar.
loadingPB.setVisibility(View.VISIBLE);
// on below line we are creating a retrofit
// builder and passing our base url
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://reqres.in/api/")
// as we are sending data in json format so
// we have to add Gson converter factory
.addConverterFactory(GsonConverterFactory.create())
// at last we are building our retrofit builder.
.build();
// below line is to create an instance for our retrofit api class.
RetrofitAPI retrofitAPI = retrofit.create(RetrofitAPI.class);
// passing data from our text fields to our modal class.
DataModal modal = new DataModal(name, job);
// calling a method to create a post and passing our modal class.
Call<DataModal> call = retrofitAPI.createPost(modal);
// on below line we are executing our method.
call.enqueue(new Callback<DataModal>() {
@Override
public void onResponse(Call<DataModal> call, Response<DataModal> response) {
// this method is called when we get response from our api.
Toast.makeText(MainActivity.this, "Data added to API", Toast.LENGTH_SHORT).show();
// below line is for hiding our progress bar.
loadingPB.setVisibility(View.GONE);
// on below line we are setting empty text
// to our both edit text.
jobEdt.setText("");
nameEdt.setText("");
// we are getting response from our body
// and passing it to our modal class.
DataModal responseFromAPI = response.body();
// on below line we are getting our data from modal class and adding it to our string.
String responseString = "Response Code : " + response.code() + "\nName : " + responseFromAPI.getName() + "\n" + "Job : " + responseFromAPI.getJob();
// below line we are setting our
// string to our text view.
responseTV.setText(responseString);
}
@Override
public void onFailure(Call<DataModal> call, Throwable t) {
// setting text to our text view when
// we get error response from API.
responseTV.setText("Error found is : " + t.getMessage());
}
});
}
}
Now run your app and see the output of the app.
Output:
Similar Reads
How to Update Data in API using Retrofit in Android?
We have seen reading data from API as well as posting data to our database with the help of the API. In this article, we will take a look at updating our data in our API. We will be using the Retrofit library for updating our data in our API. What we are going to build in this article? We will be
6 min read
How to Post Data to API using Volley in Android?
We have seen reading the data from API using Volley request with the help of GET request in Android. With the help of GET Request, we can display data from API in JSON format and use that data inside our application. In this article, we will take a look at posting our data to API using the POST requ
5 min read
How to Post Data to API using Retrofit in Android using Jetpack Compose?
APIs are used within Android Applications to interact with databases to perform various CRUD operations on data within the database such as adding new data, reading the existing data, and updating and deleting existing data. In this article, we will take a look at How to Post Data to API using Retro
5 min read
How to Insert/Append Data to Excel using Android?
File handling in Java is used to read and write data to a file. The particular file class from the package called java.io allows us to handle and work with different formats of files. File handling allows users to store data permanently in a file. And the best or suggested document for storing data
3 min read
How to Update Data in API using Retrofit in Android using Jetpack Compose?
Android applications use APIs within Android Applications to access data from databases. We can perform several operations using APIs such as Reading, Writing, and Updating our Data in the Database. In this article, we will take a look at How to Update Data in API using Retrofit in Android using Jet
9 min read
How to Build a Stock Market News Android App using Retrofit?
Building a stock market news app can be a great way to stay informed about the latest developments in the financial world. This article will explore how to build a simple news app using Kotlin and Retrofit. A sample video is given below to get an idea about what we are going to do in this article. S
12 min read
How to Update Data in API using Volley in Android?
Prerequisite: JSON Parsing in Android using Volley LibraryHow to Post Data to API using Volley in Android? We have seen reading data from API as well as posting data to our database with the help of the API. In this article, we will take a look at updating our data in our API. We will be using the V
5 min read
How to Send Data Back to MainActivity in Android using Kotlin?
As there are many methods to send the data, but in this article, we will use startActivityForResult() method. Here we need to launch a child activity using startActivityForResult() method. Then from child activity, we can easily send data back to Main Activity. Example: Note: To implement it in jav
2 min read
How to Make a Joke App in Android Using API Call?
Jokes are the best way to keep the face smiling. With the power of technology, we can create apps that provide instant access to a broad Category(i.e. animal, money, career, dev etc ) of jokes at any time. In this article, we will create a Joke App in Android that uses API calls to fetch jokes from
7 min read
How to Post Data to API using Volley in Android using Jetpack Compose?
APIs are used within Android Applications to interact with a database to perform various CRUD operations on data within the database such as adding new data, reading the existing data, and updating and deleting existing data. In this article, we will take a look at How to Post data to API in android
3 min read