Модернизация заголовков и кузова Kotlin

У меня вопрос по дооснащению. Я делаю запрос к службе через POST, и мне нужно добавить заголовок и тело. Как правильно это сделать или хотя бы функционально. Я безуспешно пробовал со следующей строкой.

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)

@Path будет работать только для параметров пути. для заголовка вы можете передать токен @Header("Token") в fun getPets.

Moinkhan 17.12.2018 07:26

Могу ли я использовать в функции 2 заголовка с телом? fun getPets (@Header ("Accept") Accept: String, @Header ("Token") Token: String, @Body body: TheBody). Что-то вроде этого?

Diego Cardenas 17.12.2018 11:35

Да, для этого вы можете использовать @HeaderMap и передать хэш-карту пары ключ, значение

Moinkhan 17.12.2018 11:48

Спасибо большое!

Diego Cardenas 17.12.2018 11:52
Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
Создание ресурсов API Laravel: Советы по производительности и масштабируемости
Создание ресурсов API Laravel: Советы по производительности и масштабируемости
Создание API-ресурса Laravel может быть непростой задачей. Она требует глубокого понимания возможностей Laravel и лучших практик, чтобы обеспечить...
Как создать простое погодное приложение на Python с API OpenWeatherMap
Как создать простое погодное приложение на Python с API OpenWeatherMap
Этот учебник проведет вас через процесс создания простого погодного приложения с помощью Python и OpenWeatherMap API.
Пакеты Java
Пакеты Java
Пакет java - это группа классов, интерфейсов и подпакетов схожего типа. Думайте об этом как о папке в каталоге файлов. Мы используем пакеты, чтобы...
Как использовать API парсинга квитанций с помощью JavaScript за 5 минут?
Как использовать API парсинга квитанций с помощью JavaScript за 5 минут?
В этом руководстве вы узнаете, как использовать API парсинга квитанций за 5 минут с помощью JavaScript. Eden AI предоставляет простой и удобный для...
1
4
2 059
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Используя интерфейс и аннотации, вы могли бы сделать что-то вроде этого

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()
    }
}

Другие вопросы по теме