Android retrofit
retrofit
自主開発したapiサーバーに接続するAndroidアプリが必要なため、改造の仕方を学び始めた.
サーバーにログインするには、ネット名でメールを調べ、携帯電話番号でメールを調べます.
初めて私がしなければならないのはインタフェースを作成することです.
public interface mannayoService {
@POST("/members/findMyAccountByNickname")
fun getMyAccountByNickname(@Body reqdata: SendNicknameRequestData): Call<resdata>
@POST("/members/findMyAccountByPhoneNumber")
fun getMyAccountByPhoneNumber(@Body reqdata: SendPhoneNumberRequestData): Call<resdata>
}
@Post Arnotationを使用してサーバにデータ送信を通知します.@Body Arnotationを使用してSendPhoneNumberRequestデータ型のデータクラスを作成
Jsonで解析します.
SendPhoneNumberRequestData、SendNickNameRequestDataは以下の通りです.
data class SendNicknameRequestData (
@SerializedName("nickName")
@Expose
val nickname: String,
@SerializedName("realName")
@Expose
val realname: String
)
data class SendPhoneNumberRequestData (
@SerializedName("phoneNumber")
@Expose
val phoneNumber: String,
@SerializedName("realName")
@Expose
val realname : String
)
@SerialzedNameJSONで一致する名前を指定するためのフィールドタグ言語.
@Expose
objectの値がnullの場合、jsonとして作成するフィールドは自動的に省略されます.
すでにdataクラスが実現されており,初期化改造が可能である.
val retrofit = Retrofit.Builder()
.baseUrl("http://192.168.0.2:8080")
.addConverterFactory(GsonConverterFactory.create())
.build()
改造初期化が完了すると、改造サービスオブジェクトを生成する必要があります.val service = retrofit.create(mannayoService::class.java)
前に定義したインタフェースをパラメータとして変形create()メソッドに渡すと、実行可能なサービスオブジェクトを生成して返します.
service.getMyAccountByNickname(sendNicknameData).enqueue()
サービスはmannayoServiceインタフェースを使用してオブジェクトを作成します.呼び出し可能な状態のgetMyAccountByNickname()、getMyAccountByPhoneNumber()
所有する
改善されたcreate()メソッドは、インタフェースを実行可能なサービスオブジェクトにします.
getMyAccountByNickname()、getMyAccountByPhoneNumber()メソッドには、非同期通信でデータを取得するenqueue()メソッドが追加されています.enqueue()を呼び出すと、通信が開始されます.
service.getMyAccountByNickname(sendNicknameData).enqueue(object : Callback<resdata> {
override fun onFailure(call: Call<resdata>, t: Throwable) {
binding.textView4.text = "인터넷 연결을 확인해 주세요!!"
}
override fun onResponse(call: Call<resdata>, response: Response<resdata>) {
if (response.isSuccessful) {
val reqresponse = response.body() as resdata
binding.textView4.text =
sendNicknameData.realname + "님의 이메일 아이디는 " + reqresponse.email + " 입니다."
} else {
binding.textView4.text = "가입하신 이력이 없습니다."
}
}
})
service.getMyAccountByPhoneNumber(sendPhoneNumberData).enqueue(object : Callback<resdata> {
override fun onFailure(call: Call<resdata>, t: Throwable) {
binding.textView4.text = "인터넷 연결을 확인해 주세요!!"
}
override fun onResponse(call: Call<resdata>, response: Response<resdata>) {
if (response.isSuccessful) {
val reqresponse = response.body() as resdata
binding.textView4.text =
sendPhoneNumberData.realname + "님의 이메일 아이디는 " + reqresponse.email + " 입니다."
} else {
binding.textView4.text = "가입하신 이력이 없습니다."
}
}
})
onFailure関数は、通信に失敗したときに呼び出されるメソッドです.onResponseは、通信が成功したときに呼び出される方法です.
ただし、onResponseが通信に成功したときに2 xxのコードではなく、4 xxのエラーコードを返すと、onResponseが呼び出されます.
if (response.isSuccessful)
文に条件を入れると、2 xxコードの戻り時と4 xxコードの戻り時を別々に実施できます.アンドロイドの改造はここまでです.
次回は、リクエストしたデータを改造して応答するプロセスを書きます.
Reference
この問題について(Android retrofit), 我々は、より多くの情報をここで見つけました https://velog.io/@hjkwon0814/Android-retrofitテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol