Retrofit2:带有JSON数据的KotlinPOST请求返回400

pbgvytdp  于 2023-05-01  发布在  Kotlin
关注(0)|答案(2)|浏览(299)

我尝试使用Retrofit2而不是原始的HttpUrlConnection为我的应用程序,所以我测试它,我发现它的第一个基本问题。
我在www.example上试了一下 www.example.com 测试API将json数据传递给它,但它返回HTTP代码400。

object AppAPI {

    private const val baseUrl = "https://reqres.in/api/"

    fun getInstance(): Retrofit {
        return Retrofit.Builder().baseUrl(baseUrl)
            .addConverterFactory(GsonConverterFactory.create())
            .build()
    }
}

interface ApiRegisterUser {
    @Headers(
        "Content-Type: application/json;charset=utf-8",
        "Accept: application/json;charset=utf-8"
    )
    @POST("register")
    suspend fun registerUser(@Body userData: UserRegisterData) : Response<UserRegisterResponse>
}

data class UserRegisterData(
    @SerializedName("email") val email: String,
    @SerializedName("password") val password: String
)

回复:

response: error: response: Response{protocol=h2, code=400, message=, url=https://reqres.in/api/register}

所以我发现了这里的错误:response.errorBody()中存在特定错误

Note: Only defined users succeed registration

但不确定是什么意思

yhuiod9q

yhuiod9q1#

尝试将/添加到路径的末尾,通常HTTP 400指的是来自客户端的错误请求,可能是URL或Body内容与服务器期望的内容不匹配,您是否尝试了curl相同的内容?

@POST("register/")
 suspend fun registerUser(@Body userData: UserRegisterData) : Response<UserRegisterResponse>
bvk5enib

bvk5enib2#

虽然文档中没有明确提到,但看起来这个虚拟REST API服务器只支持/register端点的预定义电子邮件地址,请参阅“Hello ReqRes users!”部分中为预定义的用户提供。
例如,使用eve.holt@reqres.in作为电子邮件地址似乎是可行的。密码显然并不重要。

相关问题