代码之家  ›  专栏  ›  技术社区  ›  Jono

使用kotlin改装,无法创建@Body

  •  3
  • Jono  · 技术社区  · 7 年前

     java.lang.IllegalArgumentException: Unable to create @Body converter for class com.jr.app.models.ExampleData (parameter #1)
    

    data class ExampleData(val id: String,
                       val firstName: String,
                       val secondName: String,
                       val profilImages: String,
                       val info: String) {
    
    }
    

    我的界面改装

    interface UsersService {
    
    @GET("/usersProfile")
    fun getAllUsers(): Call<List<ExampleData>>
    
    @POST("/usersProfile")
    fun addUser(@Body exampleData: ExampleData): Call<ResponseBody>
    
    }
    

      override fun addUser(user: ExampleData) {
        val retrofit = Retrofit.Builder().baseUrl(baseUrl).client(httpAuthClient).build();
        val userService = retrofit.create(UsersService::class.java);
        userService.addUser(user).enqueue(callbackResponse);
    }
    
     private val httpAuthClient: OkHttpClient
        get() {
            val okHttpClient = OkHttpClient().newBuilder().addInterceptor { chain ->
                val originalRequest = chain.request()
    
                val builder = originalRequest.newBuilder().header(authorizeHeader,
                        Credentials.basic(userName, password))
    
                val newRequest = builder.build()
                chain.proceed(newRequest)
            }.build()
    
            return okHttpClient
    
    
    }
    
    2 回复  |  直到 7 年前
        1
  •  5
  •   Valery Ponomarenko    7 年前

    将渐变依赖项添加到项目中:

    compile 'com.squareup.retrofit2:converter-gson:VERSION_OF_RETROFIT'
    

    构建改装实例时,添加此行:

    .addConverterFactory(GsonConverterFactory.create())
    

    在您的项目建筑中,改装对象将如下所示:

    val retrofit = Retrofit.Builder()
        .baseUrl(baseUrl)
        .client(httpAuthClient)
        .addConverterFactory(GsonConverterFactory.create())
        .build()
    
        2
  •  1
  •   Salem    7 年前

    Reformation不知道如何将ExampleData实例序列化为JSON。创建改装客户端实例时,需要添加特定的转换器工厂(请参见 Builder#addConverterFactory 方法获取详细信息)。