android - 如何使用 Retrofit 发送 post 请求?

标签 android kotlin retrofit

我正在尝试使用 Retrofit 发送发布请求,但服务器响应错误 400:错误请求。

基本网址:http://taskdemoserver.pythonanywhere.com

这是服务器文档的屏幕截图。

Server doc

这是 retrofit 界面。

package com.e.databaseapp

import retrofit2.Call
import retrofit2.http.*

interface Service {
    @Headers("user: joan","Content-Type: application/json")
    @GET( "task" )
    fun getListTask() : Call<TaskListContainer>

    @Headers("user: joan","Content-Type: application/json")
    @POST("task")
    fun saveTask (@Body task: Task) : Call<Task>

    @Headers("user: joan")
    @DELETE("task")
    fun deleteTask (task: String) : Call<Void>
}

我在我的存储库中创建了一个 Retrofit 实例。

lass TaskRepository(val taskDao: TaskDao) {
    val gson : Gson = GsonBuilder()
        .setLenient()
        .create()

    val loggingInterceptor : HttpLoggingInterceptor = HttpLoggingInterceptor()
        .setLevel(HttpLoggingInterceptor.Level.BODY)

    val httpClient : OkHttpClient = OkHttpClient.Builder()
        .addInterceptor(loggingInterceptor)
        .build()

    val retrofit: Retrofit = Retrofit.Builder()
        .baseUrl("http://taskdemoserver.pythonanywhere.com/")
        .addConverterFactory(GsonConverterFactory.create(gson))
        .client(httpClient)
        .build()

    val service: Service = retrofit.create(Service::class.java)

...

}

这是我尝试发布任务时遇到的错误。

Error 400: Bad Request

最佳答案

基本 URL 应始终以/结尾

更改 .baseUrl("http://taskdemoserver.pythonanywhere.com")

val retrofit: Retrofit = Retrofit.Builder()
        .baseUrl("http://taskdemoserver.pythonanywhere.com")
        .addConverterFactory(GsonConverterFactory.create(gson))
        .client(httpClient)
        .build()

.baseUrl("http://taskdemoserver.pythonanywhere.com/")

关于android - 如何使用 Retrofit 发送 post 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55518023/

相关文章:

android - 导航组件参数默认值

android - 具有改造功能的Android中的YouTube数据API

Android Rest客户端给出内部服务器错误500的错误(使用改造的okhttp和gson)

java - 实现后的 Retrofit 2(在 Android 中),我的 JSON 元素在哪里?

android - Adobe AIR for Android - 打开 native Facebook 应用程序

java - 如何在开始新 Activity 之前等待确定按钮

Android Facebook GraphRequest 不返回电子邮件

android - 如何在 Android 中创建 slider 屏幕(如在 Tweetdeck 中)?

java - 找不到 `activityViewModels()` Hilt Android

java - 改造中的多个相似请求顺序