首页 > 解决方案 > 如何使用retrofit2 发布一个json 数组?例如,

问题描述

我有类似的问题,

API需要像这样发送

checkpoin=[{"id":"1907","gps":"31213123,3131231","status":"1"}]

我成功创建了:

[{"id":"1907","gps":"31213123,3131231","status":"1"}]

和改造配置是这样的

@POST("save_clockings")Observable<ResponseSaveCehckpoint> saveChekpoint (
      @Query(value = "checkpoint" ,encoded = true) List<JsonObject> checkpoint);

但我查看 HTTP 日志记录

像这样的网址

https://my.domain.com/api/save_clockings?checkpoint={%22id%22:%221907%22,%22gps%22:%2231213123,3131231%22,%22time%22:%221532674384157%22,%22status%22:%221%22}

我通过失眠发送成功, 在此处输入图像描述

为什么要改造将字符 (") 转换为 (%22);

有人能帮我吗?谢谢

标签: androidarrayspostretrofitretrofit2

解决方案


@POST("save_clockings") Observable<ResponseSaveCehckpoint> saveChekpoint(@Query(value = "checkpoint") List<JsonObject> checkpoint);

删除encoded = true,因此它不会将您编码"%22

正如您所描述的,所做的更改解决了您的问题..

Request request = original.newBuilder()
   .header("User-Agent", "Accept-Encoding")
   .addHeader("accept-charset", "utf-8")
   .method(original.method(), original.body())
   .build();

推荐阅读