Search
 
SCRIPT & CODE EXAMPLE
 
CODE EXAMPLE FOR JAVA

retrofit kotlin

//     FULL EXAMPLE FOR RETROFIT 
//add Retrofit dependencies to gradle file
//file build.gradele
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
implementation 'com.squareup.okhttp3:okhttp:5.0.0-alpha.10'

// create an interface for more flexibility
// file MyAPI.kt
interface MyAPI(){
  
// function calling to server
// @Field("your_name_of_field") under this name we will receive our request on the server
// Like if(isset($_POST("your_name_of_field"))){ do something }  //PHP
  
  @FormUrlEncoded  // required annotation
  @POST("server.php")   // address of the page to which we send data and from which we receive a response
  fun SendAndGetPost(
    @Field("name") userName: String?  
    @Field("password") userPass: String?
  ):Call<ResponsedData?>?  // class ResponsedData.kt 
  

  companion object{
	private val client = OkHttpClient.Builder().build()
		operator fun invoke():MyAPI{
			return Retrofit.Builder()
            	// https://google.com/folder/ (path example)
            	.baseUrl("https://yor_server_path/")
            	.addConverterFactory(GsonConverterFactory.create())
            	.client(client)
            	.build()
            	.create(MyAPI::class.java)
	}
  }
}


// create a class to receive our response from the server
// file ResponsedData.kt
class ResponsedData{
	val email: String? = null
	val age: String? = null
  //variable names must match the names sent from the server !
}


// ActivityMain calls the function and get the data

class ActivityMain : AppCompatActivity(){

	override fun onCreate(savedInstance: Bundle){
		super.onCreate(savedInstance)
        setContentView(R.layout.activity_main)
        
        val name = "myName"
      	val password = "1234567"
        MyAPI().SendAndGetPost(name, password)?enqueue(
        	object: CalBack<ResponsedData?>{
        
              override fun onResponse(
                call: Call<ResponsedData?>,
                response: Response<ResponsedData?>)
              		{
                      if(!response.isSuccessful){
                      	Log.e("API-ERROR", response.code().toString())
                      	return
                      }else{
                        // val answer: ResponsedData
                      	val answer = response.body()
                        email.name
                        age.password
                       // data for use 
                      }
              		}
              override fun onFalure(
                call: Call<ResponsedData?>,
                  t: Throwable)
              {
              	Log.e("API-ERROR", t.printStackTrace())
              }
        	})        
	}

}

--------------------- SERVER SIDE -------------------------------------------
// this is how the file on the server looks like 
// the path to which we registered in the interface of our application
// file server.php
<?php
// Data Base includes
// or any sources 

if(isset($_POST("name")) && isset($_POST("password"))){
  	$js = array(
			'email'=>"some data from DB",
			'age'=>"some data from DB"
			);
  
	echo json_encode($js);
	exit();
}

// all examples are taken from here
// https://square.github.io/retrofit/
 
PREVIOUS NEXT
Tagged: #retrofit #kotlin
ADD COMMENT
Topic
Name
3+6 =