【发布时间】:2019-04-04 14:07:23
【问题描述】:
我正在尝试使用 Retrofit 发送发布请求,但服务器响应错误 400:错误请求。
基本网址:http://taskdemoserver.pythonanywhere.com
这是服务器文档的截图。
这是改造界面。
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)
...
}
这是我尝试发布任务时遇到的错误。
【问题讨论】:
-
添加您的基本网址或邮递员图片
-
请添加代码,您将在其中创建改造服务的实例以及代码,您将在其中执行实际调用
-
您能否使用最新版本的代码更新您的问题,并详细说明您的服务器端点以及您现在遇到的错误是什么?
-
@dglozano 这是我的代码的最新版本
-
你没有按照我在回答中所说的去做。您不应该发送应用程序/json,您的服务器期望以 FormUrlEncoded 形式获取它。删除
@Body注释并在顶部包含注释@FormUrlEncoded。检查我的更新答案