java.io.EOFException: конец ввода в строке 2 столбца 5 - PullRequest
0 голосов
/ 23 октября 2018

Я вызывал веб-сервис с использованием Retrofit2, но onResponse не вызывается и вызывается onFailure. Несмотря на то, что служба успешно работает на стороне сервера
И всякий раз, когда я пытался использовать fiddler, чтобы проверить, работает ли сервисЯ обнаружил, что проблема заключается в том, что при сериализации поступающего ответа службы, и при использовании fiddler, я обнаружил, что нет содержимого в ответе JSON, поэтому служба Retrofit предположила, что это не удалось, потому что нет содержимого, и она не может сериализовать содержимое EMPTY и дать мнеэта ошибка
Запрос

{
  "mode":"JainSanghViewMember",
  "reg_par_id":"11"  } 



Ответ

{
"Status": 1,
"userDetails":[
{
"reg_fm_id": 27,
"reg_fm_name": "Hitesh Bhatiya",
"reg_fm_mobileno": "9913990087",
"reg_fm_email": "hitesh.vnurture@gmail.com",
"reg_fm_profilepic": "",
"relationship_name": "Self"
},
{
"reg_fm_id": 64,
"reg_fm_name": "Jayesh Pansheriya ",
"reg_fm_mobileno": "8905982801",
"reg_fm_email": "jayesh.vnurture@gmail.com",
"reg_fm_profilepic": "",
"relationship_name": "Brother"
}
],
"Message": "Family member details listed successfully"
}


Мой код

interface APIInterface  {
@FormUrlEncoded
@POST("webservice.php")
fun viewUser(@Field("mode") mode: String,@Field("reg_par_id") reg_par_id:String): Call<UserList>
}

object RetrofitClient {

var retrofit: Retrofit? = null

fun getClient(baseUrl: String): Retrofit? {
    if (retrofit == null) {
        retrofit = Retrofit.Builder()
            .baseUrl(baseUrl)
            .addConverterFactory(GsonConverterFactory.create())
            .build()
    }
    return retrofit
}
}

 override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    apiInterface = RetrofitClient.getClient(BASE_URL)!!.create(APIInterface::class.java)


    var hero: Call<UserList> = apiInterface!!.viewUser("JainSanghViewMember","11")
    hero.enqueue(object : Callback<UserList> {
        override fun onFailure(call: Call<UserList>?, t: Throwable?) {
            var t=Toast.makeText(this@MainActivity,"h"+t.toString(),Toast.LENGTH_LONG).show()
                Log.i("jjjj",t.toString())
        }

        override fun onResponse(call: Call<UserList>?, response: Response<UserList>?) {
            Log.d("hello", response!!.body().Status.toString())
            var t=Toast.makeText(this@MainActivity,"h"+response!!.body().Status.toString(),Toast.LENGTH_LONG).show()
        }

    })

Мой класс модели:

  data class UserList(
    val Message: String,
    val Status: Int,
    val userDetails: List<UserDetail>
)

data class UserDetail(
    val reg_fm_email: String,
    val reg_fm_id: Int,
    val reg_fm_mobileno: String,
    val reg_fm_name: String,
    val reg_fm_profilepic: String,
    val relationship_name: String
)

Пожалуйста, поделитесь своей идеей, чтобы решить эту проблему / ошибка спасибо

1 Ответ

0 голосов
/ 27 октября 2018

Проблема заключается в вашем классе данных для детализации пользователя, в котором вы меняете имя свойства с

reg_fm_mobileno

на

reg_fm_number

... и вы определили все свойства, отличные от NULL, поэтому синтаксический анализ gson не удастся, поскольку он не может найти reg_fm_number в ответе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...