将String作为POST参数传递改进有效负载

时间:2017-03-31 13:51:07

标签: android retrofit

我正在尝试将一个String传递给我的服务器的POST改进方法。 这是我的电话:

Observable<MyOrder> addNoteOrder(@Header("Token1")String token1,
                                 @Header("Token2")String token1,
                                 @Path("orderId")long orderId,
                                 @Body String orderNote);

我这样打电话:

mRestApi.addNoteOrder("token1", "token2", "0", "001");

使用我的服务器调试我有500个错误,因为它告诉我错误是在有效负载创建中。

那么,如何将String对象作为有效负载发送到我的服务器。这是我第一次这样做。

2 个答案:

答案 0 :(得分:0)

@Path会将POST网址中的参数替换为您传递给它的字符串。它应该看起来像

@POST("some/{orderId}")
Call<MyOrder> addNoteOrder(@Path("orderId") long orderId,
                           @Header("Token1") String token1,
                           @Header("Token2") String token1,
                           @Body String orderNote);

并致电服务

Call<MyOrder> responseBodyCall = mRestApi.addNoteOrder(params);
responseBodyCall.clone().enqueue(new Callback<MyOrder>() {
    @Override
    public void onResponse(Call<MyOrder> call, Response<MyOrder> response) {

    }

    @Override
    public void onFailure(Call<MyOrder> call, Throwable t) {

    }
});

答案 1 :(得分:0)

你需要这样设置你的界面:

Observable<MyOrder> addNoteOrder(@HeaderMap HashMap<String, String> headers,
                                 @Path("orderId")long orderId,
                                 @Body String orderNote);

用改造来调用它:

HashMap<String, String> headers = new HashMap<String, String>();
        headers.put("Token1",token1);
        headers.put("Token2", token2);
mRestApi.addNoteOrder(headers, 0, "001");

希望这会奏效。