使用改造发送FormUrlEncoded时出现问题

我有此请求,我需要使用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”的值,由改型编码

dongjiahui 回答:使用改造发送FormUrlEncoded时出现问题

我终于得到了答案,这是'$''clnt_res'中的符号"AA!@#$T"的问题,问题出在科特林,您需要转义特殊字符{{ 1}},我制作的IDE并没有告诉我这是错误的"\$"

,

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

  1. 创建json请求的Pojo模型并通过设置其值来传递它。
  2. 创建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>
本文链接:https://www.f2er.com/3118685.html

大家都在问