无法将RapidApi与Retrofit一起使用

问题描述 投票:0回答:1

我是 Retrofit 的新手,我正在尝试将 RapidApi 中的 Google Translate Api 与 Retrofit 结合使用,但我无法将 okhttp 代码片段转换为 Retrofit

这是使用 OkHttp 进行 Post 请求的示例代码片段:

val client = OkHttpClient()

val mediaType = MediaType.parse("application/x-www-form-urlencoded")
val body = RequestBody.create(mediaType, "q=Hello%2C%20world!&target=es")
val request = Request.Builder()
    .url("https://google-translate1.p.rapidapi.com/language/translate/v2")
    .post(body)
    .addHeader("content-type", "application/x-www-form-urlencoded")
    .addHeader("Accept-Encoding", "application/gzip")
    .addHeader("X-RapidAPI-Host", "google-translate1.p.rapidapi.com")
    .addHeader("X-RapidAPI-Key", API_KEY)
    .build()

val response = client.newCall(request).execute()

我想在 android 中使用 Retrofit 提出相同的请求

这是我的api接口:

interface TranslatorApi {

    @Headers(
        "content-type: application/x-www-form-urlencoded",
        "Accept-Encoding: application/gzip",
        "X-RapidAPI-Host: google-translate1.p.rapidapi.com",
        "X-RapidAPI-Key: API_KEY
    )
    @POST("translate/v2")
    suspend fun translate(
        @Body q: String,
        @Query("target") target: String,
        @Query("source") source: String
    ): Response<GoogleTranslateObject>
}
android retrofit retrofit2 rapidapi
1个回答
0
投票

这对我有用:

interface TranslationApi {

@Headers(
    "content-type: application/x-www-form-urlencoded",
    "Accept-Encoding: application/gzip",
    "X-RapidAPI-Key: $API_KEY",
    "X-RapidAPI-Host: google-translate1.p.rapidapi.com"
)
@POST("language/translate/v2")
@FormUrlEncoded
suspend fun translateText(
    @Field("q") query: String,
    @Field("target") targetLang: String = "tr",
    @Field("source") sourceLang: String = "en"
): Response<TranslationResponseDto>
}
© www.soinside.com 2019 - 2024. All rights reserved.