【问题标题】:How do I post a json array with retrofit2? For example,如何使用retrofit2 发布一个json 数组?例如,
【发布时间】:2019-01-04 06:10:29
【问题描述】:

我也有类似的问题,

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}

我通过失眠发送成功, enter image description here

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

有人可以帮助我吗? 谢谢

【问题讨论】:

标签: android arrays post retrofit retrofit2


【解决方案1】:
@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();

【讨论】:

  • 我已经尝试过了,但它不起作用,它会像这样在 okhttp 中添加标头 `Request request = original.newBuilder().header("User-Agent", "Accept-Encoding" ).addHeader("accept-charset", "utf-8).method(original.method(), original.body()).build();`
猜你喜欢
  • 2019-11-23
  • 1970-01-01
  • 1970-01-01
  • 2020-11-18
  • 1970-01-01
  • 2018-12-25
  • 2016-06-12
  • 2017-06-08
  • 2020-07-25
相关资源
最近更新 更多