改装标头和车身Kotlin

时间:2018-12-16 21:14:56

标签: api kotlin retrofit2

我有一个关于改造的问题。 我正在通过POST向服务提出请求,并且需要添加Header和Body。 什么是正确的方法,或者至少可以起作用。我尝试了以下内容,但没有成功。

interface Service{
    @Headers(
            "Accept: application/vnd.github.v3.full+json",
            "Token : {myToken}")
    @POST("pet/list")
    fun getPets(@Path("myToken")token: String, @Body body: TheBody): Call<PetList>
}
class TheBody(var userId: String,
              var auth: String)

1 个答案:

答案 0 :(得分:0)

使用界面和注释,您可以执行以下操作

import com.google.gson.annotations.SerializedName
import io.reactivex.Single
import retrofit2.http.GET
import retrofit2.http.Header
import retrofit2.http.Path
import retrofit2.http.Query

interface MoviesApi {

    @GET("/key")
    fun  getKey(
            @Query("email") email: String)
            : Single<Dto.KeyResponse>

    @GET("/movies")
    fun  getMovies(
            @Header("api-key") apiKey: String, // DEFINE HEADER HERE
            @Query("page") page: Int,
            @Query("sort") sort: String,
            @Query("q") querySearch: String)
            : Single<List<Dto.MovieResponse>>

    sealed class Dto {
        data class KeyResponse(
                @SerializedName("key") val key: String,
                @SerializedName("email") val email: String
        ) : Dto()

        data class MovieResponse(
                @SerializedName("id") val id: Int,
                @SerializedName("title") val title: String,
                @SerializedName("description") val description: String,
                @SerializedName("image") val image: String
        ) : Dto()
    }
}