【问题标题】:Passing String as POST parameter Retrofit payload传递字符串作为 POST 参数改造有效载荷
【发布时间】:2017-03-31 13:51:07
【问题描述】:

我正在尝试将字符串传递给我的服务器的 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 对象作为有效负载发送到我的服务器。这是我第一次这样做。

【问题讨论】:

  • 你的 api 是什么?参数处的两次 token1 ?

标签: android retrofit


【解决方案1】:

@PathPOST url 中的参数替换为您传递给它的字符串。它应该看起来像

@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.9
【解决方案2】:

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

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");

希望这会奏效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-04
    • 2021-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-13
    相关资源
    最近更新 更多