【问题标题】:Retrofit 2 @FieldMap always empty改造 2 @FieldMap 始终为空
【发布时间】:2016-03-17 03:09:03
【问题描述】:

我已经手动制作了地图

private Map<String, Object> getProducts(){
    List<CartContentDMC> products = new Select().from(Data.class).execute();
    Map<String, Object> productMap = new LinkedHashMap<>();
    for(int j = 0; j < products.size(); j++){
        productMap.put("products[" + Integer.toString(j) + "][code]", Integer.toString(products.get(j).id));
        productMap.put("products[" + Integer.toString(j) + "][amount]", products.get(j).amount);
        productMap.put("products[" + Integer.toString(j) + "][price]", Integer.toString(products.get(j).price));
    }
    return productMap;
}

,但在我的要求中:

@FormUrlEncoded
@POST("orders.json/createOrder?")
Call<Response> sendOrder(@Query("client_id") String id, @Query("access_token") String access_token,
                     @Query("order_id") int order_id, @Query("buyer_name") String buyer_name,
                     @Query("buyer_phone") String buyer_phone, @Query("buyer_address") String buyer_address,
                     @FieldMap Map<String, Object> products, @Query("delivery_price") int delivery_price,
                     @Query("website") String website);

FieldMap 在请求中始终为空。

我做错了什么?

【问题讨论】:

  • 您确定products 填写正确吗?
  • @Blackbelt 绝对!它给出了这样的地图:products[0][code],9 products[0][amount],3 products[0][price],15000 products[1][code],65 products[1][amount],5 products[1][price],15000 products[2][code],68 products[2][数量],2 products[2][price],25000

标签: android http request retrofit


【解决方案1】:

在这种情况下最好使用@QueryMap 而不是@FieldMap。

【讨论】:

  • @QueryMap@FieldMap 是两个不同的东西。 @QueryMap 将查询添加到您的网址。 @FieldMap 填写您的请求正文
猜你喜欢
  • 2020-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-11
  • 2017-03-15
  • 2015-12-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多