如何在请求中传递参数?

时间:2020-01-29 12:17:32

标签: java android jquery retrofit retrofit2

我尝试将来自NewOrderRequest(pojo)类的数据放入参数中:

 @Query("params") NewOrderRequest params

但我得到以下结果:

resultQueryString:参数com.example.city.Model.NewOrderRequest@f45c8ad

预期结果:

resultQueryString:参数+911

数据设置:

NewOrderRequest newOrderRequest = new NewOrderRequest();
        newOrderRequest.setPhone("+911");
        NetworkService.getInstance()
                .service()
                .newOrder(newOrderRequest)

请求:

@Headers({"Accept:application/json", "Content-Type:application/json;"})
@POST("RemoteCall?method=Taxi.WebAPI.NewOrder")
Call<RegResponse>newOrder(@Header("Cookie") String setCookie,@Query("params") NewOrderRequest params);

请告诉我如何将手机传递给参数?

3 个答案:

答案 0 :(得分:0)

尝试下面的代码

@Headers({"Accept:application/json", "Content-Type:application/json;"})
@POST("RemoteCall?method=Taxi.WebAPI.NewOrder")
Call<RegResponse>newOrder(@Header("Cookie") String setCookie,@Query("params") String phone);

答案 1 :(得分:0)

由于它是一个发布请求,其目的是将数据作为json对象发送,因此最好在请求正文中发送数据,而不要在查询参数中发送。另外,任何敏感的细节都应该是请求正文的一部分。

答案 2 :(得分:0)

您要在@Query参数中发送对象,只有@Body接受对象作为其参数。您想要的是将Object转换为JsonObject。我假设您正在使用Gson库。

NewOrderRequest newOrderRequest = new NewOrderRequest();
        newOrderRequest.setPhone("+911");
        NetworkService.getInstance()
                .service()
                .newOrder(new Gson().toJson(newOrderRequest))