我有此请求,我需要使用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”的值,由改型编码
答案 0 :(得分:1)
我终于得到了答案,这是'$'
值'clnt_res'
中的符号"AA!@#$T"
的问题,问题出在科特林,您需要转义特殊字符{{ 1}},我制作的IDE并没有告诉我这是错误的"\$"
。
答案 1 :(得分:0)
您有2个选项可以使用Retrofit从android发送json请求。
这是使用第二种方法的解决方案:
创建哈希图并放置键(参数)和值:
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>