Android — POST необработанный файл JSON в теле запроса на дооснащение
REST API предоставляют нам функциональность, с помощью которой мы можем добавлять данные в нашу базу данных с помощью REST API. Для публикации этих данных в нашей базе данных мы должны использовать метод Post REST API для публикации наших данных. Мы можем отправлять данные в наш API в разных форматах. В этой статье мы рассмотрим, как опубликовать необработанный весь JSON в теле запроса на дооснащение. Пример видео приведен ниже, чтобы получить представление о том, что мы собираемся делать в этой статье.
Note: This Android article covered in both Java and Kotlin languages.
Пошаговая реализация
Шаг 1. Создайте новый проект в Android Studio.
Чтобы создать новый проект в Android Studio, обратитесь к разделу «Как создать/запустить новый проект в Android Studio ».
Шаг 2. Добавьте приведенную ниже зависимость в файл build.gradle.
Перейдите к Gradle Scripts > build.gradle(Module:app) и добавьте приведенную ниже зависимость в раздел зависимостей.
// below dependency for using the retrofit implementation ‘com.squareup.retrofit2:retrofit:2.9.0’ implementation ‘com.squareup.retrofit2:converter-gson:2.5.0’
После добавления этой зависимости синхронизируйте свой проект и теперь переходите к части AndroidManifest.xml.
Шаг 3. Добавление разрешений к Интернету в файле AndroidManifest.xml
Перейдите к приложению > AndroidManifest.xml и добавьте в него приведенный ниже код.
XML
<!--permissions for INTERNET--> < uses-permission android:name = "android.permission.INTERNET" /> |
Шаг 4: Работа с файлом activity_main.xml
Перейдите к app > res > layout > activity_main.xml и добавьте приведенный ниже код в этот файл. Ниже приведен код файла activity_main.xml.
XML
<? xml version = "1.0" encoding = "utf-8" ?> < LinearLayout 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 > |
Шаг 5: Создание модального класса для хранения наших данных
Перейдите к приложению> java> имя пакета вашего приложения> Щелкните его правой кнопкой мыши> Создать> Класс Kotlin и назовите его как DataModal и добавьте к нему приведенный ниже код. Комментарии добавляются внутри кода, чтобы понять код более подробно.
Kotlin
package com.gtappdevelopers.kotlingfgproject data class DataModal( // on below line we are creating // variables for name and job var name: String, var job: String ) |
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; } } |
Шаг 6: Создание класса интерфейса для нашего вызова API
Перейдите к приложению> java> имя пакета вашего приложения> Щелкните его правой кнопкой мыши> Создать> Класс Java, выберите его как Интерфейс и назовите файл как RetrofitAPI и добавьте к нему приведенный ниже код. Комментарии добавляются внутри кода, чтобы понять код более подробно.
Kotlin
package com.gtappdevelopers.kotlingfgproject import retrofit2.Call import retrofit2.http.Body import retrofit2.http.POST 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. fun postData( @Body dataModal: DataModal?): Call<DataModal?>? } |
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); } |
Шаг 7: Работа с файлом MainActivity
Перейдите к приложению > java > имени пакета вашего приложения > файлу MainActivity и добавьте в него приведенный ниже код. В код добавлены комментарии для более подробного ознакомления.
Kotlin
package com.gtappdevelopers.kotlingfgproject import android.os.Bundle import android.view.View import android.widget.* import androidx.appcompat.app.AppCompatActivity import retrofit2.Call import retrofit2.Callback import retrofit2.Response import retrofit2.Retrofit import retrofit2.converter.gson.GsonConverterFactory class MainActivity : AppCompatActivity() { // on below line we are creating variables. lateinit var nameEdt: EditText lateinit var jobEdt: EditText lateinit var postBtn: Button lateinit var loadingPB: ProgressBar lateinit var responseTV: TextView override fun onCreate(savedInstanceState: Bundle?) { super .onCreate(savedInstanceState) setContentView(R.layout.activity_main) // on below line we are initializing our variables. nameEdt = findViewById(R.id.idEdtName) jobEdt = findViewById(R.id.idEdtJob) postBtn = findViewById(R.id.idBtnPost) loadingPB = findViewById(R.id.idLoadingPB) responseTV = findViewById(R.id.idTVResponse) postBtn.setOnClickListener { if (nameEdt.text.toString().isEmpty() || jobEdt.text.toString().isEmpty()) { Toast.makeText( this @MainActivity , "Please enter both the values" , Toast.LENGTH_SHORT ).show(); return @setOnClickListener } // calling a method to post the data and passing our name and job. postData(nameEdt.getText().toString(), jobEdt.getText().toString()); } } private fun postData(name: String, job: String) { // below line is for displaying our progress bar. loadingPB.visibility = View.VISIBLE // on below line we are creating a retrofit // builder and passing our base url val retrofit = Retrofit.Builder() // 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. val retrofitAPI = retrofit.create(RetrofitAPI:: class .java) // passing data from our text fields to our modal class. val dataModal: DataModal = DataModal(name, job) // calling a method to create a post and passing our modal class. val call: Call<DataModal?>? = retrofitAPI.postData(dataModal) // on below line we are executing our method. call!!.enqueue(object : Callback<DataModal?> { override fun onResponse(call: Call<DataModal?>?, response: Response<DataModal?>) { // this method is called when we get response from our api. Toast.makeText( this @MainActivity , "Data added to API" , Toast.LENGTH_SHORT).show() // below line is for hiding our progress bar. loadingPB.visibility = 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. val response: DataModal? = response.body() // on below line we are getting our data from modal class // and adding it to our string. val responseString = "Response Code : " + "201" + "
" + "Name : " + response!!.name + "Job : " + response!!.job // below line we are setting our // string to our text view. responseTV.text = responseString } override fun onFailure(call: Call<DataModal?>?, t: Throwable) { // setting text to our text view when // we get error response from API. responseTV.text = "Error found is : " + t.message } }) } } |
Java
package com.gtappdevelopers.kotlingfgproject; 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, <
РЕКОМЕНДУЕМЫЕ СТАТЬИ |