Code: Select all
data class UserData(
@SerializedName("username")
val username : String,
@SerializedName("email")
val email : String,
@SerializedName("password")
val password : String
)
Code: Select all
object RetrofitHelper {
val baseUrl = "http:///api/include/"
fun getInstance(): Retrofit {
val httpLoggingInterceptor: HttpLoggingInterceptor = HttpLoggingInterceptor()
httpLoggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY)
val okHttpClient = OkHttpClient.Builder()
.addInterceptor(httpLoggingInterceptor)
.build()
val gson = GsonBuilder()
.setLenient().create()
return Retrofit.Builder()
.baseUrl(baseUrl)
.addConverterFactory(GsonConverterFactory.create(gson))
.client(okHttpClient)
.build()
}
}
Code: Select all
@POST("sol_register.php")
fun registerUser(@Body userdata : UserData) : Call
Code: Select all
val query = RetrofitHelper.getInstance().create(AccessApi::class.java)
Log.i("Values", event.userData.toString())
val call: Call = query.registerUser(event.userData)
call.enqueue(object : Callback {
override fun onFailure(call: Call, error: Throwable) {
Log.d("onFailure", error.message.toString())
}
override fun onResponse(call: Call, response: Response) {
val result = response.body()
Log.d("onResponse", response.code().toString())
result?.toString()?.let { Log.i("Result", it) }
}
})
Wenn ich zu wechsle Mit der folgenden Implementierung funktioniert es hervorragend.
Ändern der API-Schnittstelle in:
Code: Select all
@FormUrlEncoded
@POST("sol_register.php")
fun registerUser(
@Field("username") username: String,
@Field("email") email: String,
@Field("password") password: String
): Call
< /code>
Dann ändern Sie die Art und Weise, wie der Anruf getätigt wird: < /p>
val call: Call = query.registerUser(
event.userData.username,
event.userData.email,
event.userData.password
)