Retrofit2 не преобразует мой объект в GSON, когда я пытаюсь отправить его на сервер - PullRequest
0 голосов
/ 17 октября 2019

Всякий раз, когда я нажимаю кнопку «Отправить», пытаясь отправить имя пользователя и сообщение из текстового поля на мой URL-адрес, он отклоняется, я пытался отладить ответ, и он говорит, что мое сообщение и тело имеют нулевое значение. Кроме того, мой заголовок говорит, что он все еще в HTML/ Формат UTF8

Вот мой журнал вызовов, тела, сообщения и заголовка:

I / System.out: Вызов: true Тело ответа: сообщение nullResponse:, Заголовок ответа: X-Content-Опции типа: nosniff I / System.out: X-XSS-Protection: 1;mode = block Cache-Control: no-cache, no-store, max-age = 0, must-revalidate Прагма: no-cache Истекает: 0 X-Frame-Options: DENY Content-Type: text / html; charset = UTF-8 Content-Language: en Transfer-Encoding: chunked Дата: чт, 17 окт. 2019 11:05:07 GMT Соединение: закрыть

Объект

Класс данных Post (@SerializedName ("username)") var username: String, @SerializedName (" comment ") var textBox: String)

Ответ

класс WebUserData (сообщение var: String, статус var: String, код var: String,var id: String, var data: WebUser)

ApiClient

class PostApiClient {

interface PostApiInterface{
    @Headers("Content-Type: application/json")
    @POST("api/posts")
    fun postCreate(@Body post: Post) : Call<WebUserData>
}

companion object {
    var mApiInterface: PostApiClient.PostApiInterface? = null
    private const val API_URL = "****************" (url)

    fun getApiClient(): PostApiClient.PostApiInterface {

        if (mApiInterface == null) {
            val okHttpClient = OkHttpClient.Builder()
                    .connectTimeout(1, TimeUnit.MINUTES)
                    .writeTimeout(30, TimeUnit.SECONDS)
                    .readTimeout(30, TimeUnit.SECONDS)
                    .build()

            val retrofit = Retrofit.Builder()
                    .baseUrl(API_URL)
                    .addConverterFactory(GsonConverterFactory.create())
                    .client(okHttpClient)
                    .build()
            mApiInterface = retrofit.create(PostApiClient.PostApiInterface::class.java)

        }
        return mApiInterface!!
    }
}

}

Моя активность

Обратная связь класса: AppCompatActivity (), GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener {

private var usernameHolder: String? = null

    override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_feedback)

        //PRONALAZI IME KORISNIKA, UZIMA KOMENTAR IZ BOKSA I POZIVA BUTTON
        usernameHolder = getUserFromId(1).username
        val username = usernameHolder.toString()
        val value = findViewById(R.id.fbfield) as EditText
        val textBox = value.text
        val submitBtn = findViewById(R.id.fbsend) as Button
        //===============================================================

        val editor = defaultSharedPreferences.edit().apply {
            putString("username" , username )
            putString("textBox", textBox.toString())
        }

        editor.apply()

        submitBtn.setOnClickListener(object : View.OnClickListener {
            override fun onClick(view: View) {

                println("POST CREATE: " + Post(username, textBox.toString()).textBox + ", " + Post(username, textBox.toString()).username)

                PostApiClient.getApiClient().postCreate(Post(username, textBox.toString())).enqueue(object: Callback<WebUserData>{
                    override fun onFailure(call: Call<WebUserData>, t: Throwable) {
                        longToast("Saving trip failed.")
                    }
                    override fun onResponse(call: Call<WebUserData>, response: Response<WebUserData>) {
                        println("Call: " + call.isExecuted)
                        println("Response body:" + response.body() + "Response message: " + response.message() + ", Response header:" + response.headers())
                        if(response.body() != null){
                            if(response.body()!!.code.toInt() == 201)
                                longToast("Trip data saved successfully.")
                        }
                    }
                })
            }
        })

    setSupportActionBar(toolbar)
    supportActionBar?.setDisplayShowTitleEnabled(false)
    supportActionBar?.setHomeButtonEnabled(true)
    supportActionBar?.setDisplayHomeAsUpEnabled(true)
}

}

...