Android改造Api响应在传递参数体中的查询令牌时给出null
下图是whatsap api的响应,它在postman上运行良好 但当我尝试在android项目上使用改型来运行它时,它给出的是空响应 这是我的api参数,在ANDROID中:Android改造Api响应在传递参数体中的查询令牌时给出null,android,api,parameters,retrofit,token,Android,Api,Parameters,Retrofit,Token,下图是whatsap api的响应,它在postman上运行良好 但当我尝试在android项目上使用改型来运行它时,它给出的是空响应 这是我的api参数,在ANDROID中: fun getData(mainActivity: MainActivity): Boolean { val params = HashMap<String, Any>() params["phone"] = "+923364451111@c.us
fun getData(mainActivity: MainActivity): Boolean {
val params = HashMap<String, Any>()
params["phone"] = "+923364451111@c.us"
params["body"] = "Zeeshan Hello, world! "
retrofitClient.abc("01jideaw5zab024y", params).enqueue(object : Callback<Whatsapp> {
override fun onResponse(call: Call<Whatsapp>, response: Response<Whatsapp>) {
Log.d("SoS", "response: " + response.body())
Log.d("SoS", "response: " + response.body()?.sent)
}
override fun onFailure(call: Call<Whatsapp>, t: Throwable) {
Log.d("SoS", "error: " + t.message)
}
})
}
我认为我没有正确使用参数。任何人都可以在这里帮助我如何使用参数。我认为这不够小,无法放入注释中,因此我将添加作为答案。我猜这里有些东西 我最简单的猜测就是你在URL中的路径。如图所示,它应该是
实例259349/sendMessage
,但在您的界面中您有:
@POST("/sendMessage")
即使改装实例中的基本url为https://api.chat-api.com/instance259349
,它将转换为https://api.chat-api.com/sendMessage
(不含实例部分),因为改装如何处理领先的/
。检查这一点的快速方法是删除前导的/
,只需使用@POST(“sendMessage”)
,或者,如果您的基本url不包括实例部分,请使用@POST(“instance259349/sendMessage”)
另一个可能发生的问题是,引擎盖下的邮递员添加了应用程序没有的标题。服务器可能需要这些头,因此返回错误 我建议查看
response.errorBody()
以及响应的状态,以了解您遇到的错误。请注意,如果我的第一个猜测是正确的,您可能会得到一个404notfound
,因为该路径不存在
如果您不想手动检查,一个更容易的方法是使用。如果您可以共享
Whatsapp
类了解更多信息,这将非常有用clarification@HosseinFarrokhi刚刚编辑了我的问题,似乎还可以。无论如何,将loggingInterceptor
添加到您的应用程序中,以查看logcat
中的请求详细信息。它可以帮助您轻松调试网络请求。如果您能告诉我如何准确地编写端点、令牌和基本url,我将非常感谢您。我按照您的要求使用了实例,但仍然得到空正文,我认为我使用的令牌不正确。@Zeeshanfared根据您所做的和邮递员的图片,令牌似乎很好。您是否尝试了我提到的关于基本url和@POST
中的路径的内容?是的,我尝试了您要求的内容,但仍然得到Null和无错误正文@泽沙法雷德
class Whatsapp{
@SerializedName("sent")
@Expose
var sent: Boolean? = null
@SerializedName("message")
@Expose
var message: String? = null
@SerializedName("id")
@Expose
var id: String? = null
@SerializedName("queueNumber")
@Expose
var queueNumber: Int? = null
}
@POST("/sendMessage")