我已经尝试了很多解决方案Stackoverflow.但没有工作...请帮助我...
Retrofit 2 POST请求返回500错误。但 Postman 工作得很好。但如果我改变了Jsonobject的属性名,工作得很好。 Postman 也是。详情如下。
我问了服务器团队,但他们说没有问题。所以你能检查一下我的代码是否有问题吗?
接口
'接口登录服务{
@POST("api/v1/login") // POST
fun requestLogin( // Input
@Body loginData: JsonObject
): Call<LoginResponse> // Output`
登录活动
'类登录活动:AppCompatActivity(){私有后期初始化变量视图绑定:活动登录绑定覆盖创建功能(保存的示例状态:捆绑包?){超级创建(保存的示例状态)视图绑定=活动登录绑定。膨胀(布局膨胀器)设置内容视图(视图绑定。根)
// client
val clientBuilder = OkHttpClient.Builder()
val loggingInterceptor = HttpLoggingInterceptor()
loggingInterceptor.level = HttpLoggingInterceptor.Level.BODY
clientBuilder.addInterceptor(loggingInterceptor)
clientBuilder.retryOnConnectionFailure(true)
// retrofit
val retrofit = Retrofit.Builder()
.baseUrl("secret")
.addConverterFactory(ScalarsConverterFactory.create())
.addConverterFactory(GsonConverterFactory.create())
.client(clientBuilder.build()) // client
.build()
val userid = viewBinding.idt.text.toString()
val password = viewBinding.pwdt.text.toString()
val login = JsonObject()
login.addProperty("userId", userid)
login.addProperty("password", password)
val loginService = retrofit.create(LoginService::class.java)
viewBinding.signinbtn.setOnClickListener {
loginService.requestLogin(login).enqueue(object: Callback<LoginResponse>{
override fun onResponse(call: Call<LoginResponse>, response: Response<LoginResponse>) {
if (response.isSuccessful){
val responseData = response.body()
if (responseData != null) {
Log.d("Retrofit","ResponseCode: ${responseData.code} Message: ${responseData.message}")
if (responseData.code == 1000) {
val intent = Intent(this@LoginActivity, CalendarActivity::class.java)
startActivity(intent)
}
if (responseData.code != 1000) {
cuDialog(viewBinding.root, responseData.message)
}
if (responseData.code == 1000 && viewBinding.auto.isChecked) {
}
}
}
else {
Log.w("Retrofit", "Response Not Successful ${response.code()}")
}
}
override fun onFailure(call: Call<LoginResponse>, t: Throwable) {
Log.e("Retrofit","Error!",t)
val dialog = AlertDialog.Builder(this@LoginActivity)
dialog.setTitle("오류")
dialog.setMessage("서버와 통신에 실패했습니다.")
dialog.show()
}
})
}`
数据类(响应)
data class LoginResponse( val isSuccess: Boolean, val code: Int, val message: String, val result: ArrayList<Info>)
错误消息
IN Postman
enter image description here
Postman 工作很好
但更奇怪的是,如果我随机更改属性的名称,它的响应很好,下面是一个例子。val login = JsonObject() login.addProperty("sdfsfssdfd", userid) login.addProperty("sfsfdsfsd", password)
我更改了这部分。属性名称是随机的。
enter image description here
在AndroidStudio中,运行良好。enter image description here当然, Postman 也运行良好。
为什么如果属性名称是“userId”,不工作?请帮助我..
1条答案
按热度按时间neskvpey1#
从你的用户名和密码参数是空的。我看到你的错误截图。
尝试记录您的用户ID和密码。