java - 使用 Retrofit 发送 FormUrlEncoded 时出现问题

标签 java android kotlin retrofit2

我有这个请求,我需要使用 Retrofit 通过 FormUrlEncoded 发送它

{
   "clnt_id": "OQW",
   "clnt_res": "AA!@#$T",
   "type": "SCDS",
   "len": "ASD"
}

我使用了这段代码:

    @FormUrlEncoded
    @POST("Endpoint")
    @Headers("Accept: Application/JSON")
    fun connect(
        @Field("clnt_id") clnt_id: String,
        @Field(value = "clnt_res", encoded = false) clnt_res: String,
        @Field("type") type: String,
        @Field("len") len: String
    ): Observable<Token>

首先,请求不是以 JSON 形式发送的

二、“clnt_res”的值,通过retrofit编码

最佳答案

您有 2 个选项可以使用 Retrofit 从 Android 发送 json 请求。

  1. 创建json请求的Pojo模型并通过设置它的值来传递它。
  2. 创建 HashMap 并将其传递给请求。

这是使用第二种方法的解决方案:

创建 HashMap 并放入键(参数)和值:

Map<String,String> requestMap = new HashMap<>();
        requestMap.put("clnt_id","your_value");
        requestMap.put("clnt_res","your_value");
        requestMap.put("type","your_value");
        requestMap.put("len","your_value");

然后使用 FieldMap 将其传递给您的改造请求:

@FormUrlEncoded
    @POST("Endpoint")
    @Headers("Accept: Application/JSON")
    fun connect(
        @FieldMap requestMap:Map<String,String>
    ): Observable<Token>

关于java - 使用 Retrofit 发送 FormUrlEncoded 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58815528/

相关文章:

java - Junit 测试单独通过但一起运行时失败

kotlin - 在 Kotlin 中推断通用类型的 Map

kotlin - 在 Kotlin 中,我可以在集合上添加条件构建器元素吗?

spring - 未找到接口(interface) org.springframework.web.reactive.function.server.ServerRequest 的主构造函数或默认构造函数

java.util.ArrayList.sort() 排序算法

Java:如何将带有月份名称的字符串转换为日期时间?

将xls数据导入mysql数据库的java代码

android - 从某一帧开始循环 Lottie 动画

android - 无法在 Google Glass 上拍摄图像

java - firebase 分析中的事件 "first_open"如何计数?