【发布时间】:2018-08-17 19:05:30
【问题描述】:
我已经发布了一个请求并在 postman 上测试它,响应在 postman 和 android logcat 上正确返回,但在改造时它在正文中返回 null
这里是响应的模型
public class DriverResponse implements Serializable{
@SerializedName("errors")
@Expose
public Errors errors;
@SerializedName("driversapi")
@Expose
public Driversapi driversapi;
}
public class Errors implements Serializable {
@SerializedName("driversapi")
@Expose
public List<String> driversapi = null;
}
public class Driversapi implements Serializable{
public String driverid ;
public String status ;
public String authtoken ;
}
这里是获取数据的代码
public void acceptOrder(String auth, AcceptOrderModel acceptOrderModel) {
ApiInterface service = ApiClient.getClient().create(ApiInterface.class);
Call<DriverResponse> connection = service.acceptOrder(auth, acceptOrderModel);
if (connection != null) {
connection.enqueue(new Callback<DriverResponse>() {
@Override
public void onResponse(Call<DriverResponse> call, Response<DriverResponse> response) {
String reponseStr = response.toString().replaceAll("\\\\", "");
Log.e("new String", reponseStr);
apiResponse.onSuccess(response.body());
}
@Override
public void onFailure(Call<DriverResponse> call, Throwable t) {
Log.e("QR ", " " + t.getLocalizedMessage());
apiResponse.onFailed(t.getLocalizedMessage());
}
});
}
}
@Headers({"Content-Type: application/json"})
@POST("/api/drivers/driveracceptorder")
Call<DriverResponse> acceptOrder(@Header("Authorization") String Authorization, @Body AcceptOrderModel acceptOrderModel);
当我发送请求时,响应得到空响应和错误正文内容得到这个
[size=99 text={\r\n "errors": {\r\n "driversapi": [\r\n "order alredy assig...]
这是预期的 json,应该返回并且已经在 logcat 和 postman 中返回
{
"errors": {
"driversapi": [
"driver not found"
]
}
}
编辑
这是我的 LogCat
POST http://site.example.com/api/drivers/driveracceptorder http/1.1
03-09 10:57:17.533 8128-17940/com.trend.driver D/OkHttp: Content-Type: application/json
03-09 10:57:17.533 8128-17940/com.trend.driver D/OkHttp: Content-Length: 47
03-09 10:57:17.533 8128-17940/com.trend.driver D/OkHttp: Authorization: Ber z3rlF3cUYICZUm49HeCkpOU8TEjITCqq5tplXDZU4pxvRlzTScUo-0wZr52trM9kWinOnqzaJBwgMB9pp0tk4GTx7BGDoX-u5H9IfQWHlJ_iYpWOIkTiZOb4JuovPPPTfta4MJlRJO6IjasBKpNTvT7KRqp4gHrw3xs9JWa9RTCuY83JhaBf2weyQ8RwsT_SVTg
03-09 10:57:17.535 8128-17940/com.trend.driver D/OkHttp: {"accept":"1","driverid":"2112","orderid":"46"}
03-09 10:57:17.535 8128-17940/com.xxxx.driver D/OkHttp: --> END POST (47-byte body)
03-09 10:57:17.535 8128-8128/com.trend.driver I/Choreographer: Skipped 115 frames! The application may be doing too much work on its main thread.
03-09 10:57:18.290 8128-17940/com.trend.driver D/OkHttp: <-- 404 Not Found http://site.example.com/api/drivers/driveracceptorder (754ms)
03-09 10:57:18.291 8128-17940/com.trend.driver D/OkHttp: Cache-Control: private
03-09 10:57:18.291 8128-17940/com.trend.driver D/OkHttp: Content-Length: 99
03-09 10:57:18.291 8128-17940/com.trend.driver D/OkHttp: Content-Type: application/json
03-09 10:57:18.291 8128-17940/com.trend.driver D/OkHttp: Server: Microsoft-IIS/8.5
03-09 10:57:18.291 8128-17940/com.trend.driver D/OkHttp: Set-Cookie: Nop.customer=9df71aba-df96-4aa4-a8f5-daab40d91d5e; expires=Sat, 09-Mar-2019 08:57:18 GMT; path=/; HttpOnly
03-09 10:57:18.291 8128-17940/com.trend.driver D/OkHttp: Date: Fri, 09 Mar 2018 08:57:18 GMT
03-09 10:57:18.294 8128-17940/com.trend.driver D/OkHttp: {
03-09 10:57:18.295 8128-17940/com.trend.driver D/OkHttp: "errors": {
03-09 10:57:18.295 8128-17940/com.trend.driver D/OkHttp: "driversapi": [
03-09 10:57:18.295 8128-17940/com.trend.driver D/OkHttp: "order alredy assigned to other driver"
03-09 10:57:18.295 8128-17940/com.trend.driver D/OkHttp: ]
03-09 10:57:18.295 8128-17940/com.trend.driver D/OkHttp: }
03-09 10:57:18.295 8128-17940/com.trend.driver D/OkHttp: }
03-09 10:57:18.295 8128-17940/com.trend.driver D/OkHttp: <-- END HTTP (99-byte body)
【问题讨论】:
-
与您的后端团队确认您是否正确传递了所需的参数。
-
发布你的日志
-
什么课程
ResponseTest?看起来您应该使用DriverResponse作为 API 调用中的模型类。 -
@Fazal Hussain,我已经发布了 Logcat
标签: android gson retrofit retrofit2