Android Retrofit Post Data Type to Server States Data ist NullAndroid

Forum für diejenigen, die für Android programmieren
Guest
 Android Retrofit Post Data Type to Server States Data ist Null

Post by Guest »

Ich versuche, ein Datenmodell an einen Server in Android zu übergeben, indem ich das Benutzerkonto für das Registrieren des Benutzerkontos übergeben kann. Wenn ich den Datentyp von UserData per Post an den Server sende, erhalte ich ein Problem. HTTP 500 mit der Angabe der Werte sind null.

Code: Select all

data class UserData(

@SerializedName("username")
val username : String,
@SerializedName("email")
val email : String,
@SerializedName("password")
val password : String
)
Mein Retrofit-Modell

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()
}
}
Die API-Schnittstelle

Code: Select all

    @POST("sol_register.php")
fun registerUser(@Body userdata : UserData) : Call
Die Aktion zum Tätigen des Anrufs

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) }
}
})
Der Logcat druckt die UserData-Werte ordnungsgemäß aus, aber der Fehler, den ich vom Server erhalte, ist, dass die Werte alle null sind.
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
)
Was kann das Problem verursachen? Ich würde lieber versuchen, den Datentyp zu übergeben, anstatt jedes Feld einzugeben. (denken Sie an zukünftige Implementierungen)

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post