【问题标题】:Android Retrofit post Map<String, Object> including Array doesn't workAndroid Retrofit post Map<String, Object> 包括数组不起作用
【发布时间】:2017-10-04 08:29:33
【问题描述】:

我尝试通过 Retrofit 发布 Map,如下所示。

ArrayMap<String, Object> map = new ArrayMap<String, Object>();

String key1 = "value1"

int[] intArray = {18, 29, 36, 12};


String[] strArray =  {"strValue1", "strValue2", "strValue3", "strValue4"};


map.put("key1","value1");
map.put("key2",intArray);
map.put("key3",strArray);


↓


@FormUrlEncoded
@POST("url")
void postSomething(
        @FieldMap ArrayMap<String, Object> params
);



Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(URL)
            .client(httpClient)
            .addConverterFactory(GsonConverterFactory.create(gson))
            .build();

但是,数组参数在 Web 服务器上无法正常工作。

在日志上: intArray=notvalue&strArray=notvalue

什么是适当的数组注释或错误?

谢谢!

【问题讨论】:

  • 不确定你想要什么。将您的数组作为 JSON 数组发布是否可行?

标签: java android post retrofit2


【解决方案1】:

你需要使用@FieldMap.

@FieldMap ArrayMap<String(field_name), Object> fields

祝你好运

埃姆雷

【讨论】:

  • 谢谢。我改进了模型类,但还没有工作。
  • 服务器的响应是什么? http状态码也有帮助吗?
  • 谢谢,在日志中:intArray=notvalue&strArray=notvalue
  • 看起来我们和服务器不在同一个页面。我们需要知道服务器的方法签名。你确定它是 urlencoded?
  • 基本上把Retrofit和Okhttp结合起来。日志是 Okhttp 的,而不是 Retrofit。我尝试研究 Okhttp。谢谢,
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-29
  • 2018-09-22
  • 1970-01-01
  • 1970-01-01
  • 2020-08-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多