我正在向我的后端发出 POST 请求,但仅使用改造时我收到 400。 我深入研究了这个问题并意识到,由于我的 POST 正文是一个普通字符串(而不是 JSON),每当我有双引号时,它都会在其后面添加一个反斜杠,然后发送请求。电话如下:
@POST("/endpoint")
Observable<Result<MyResponse>> myApiCall(@Body String body);
我做了一些研究,人们建议我需要添加一个 StringConverterFactory,但这并没有帮助(我点击了此链接:String转换器工厂)
我认为改造 github 页面中的链接已过时!
试试这个..
@POST("/endpoint")
Observable<Result<MyResponse>> myApiCall(@Body RequestBody body);
RequestBody body= RequestBody.create(MyRequest.create("data"));
public abstract class StringRequestBody extends RequestBody {
public static RequestBody create(String content) {
MediaType contentType = MediaType.parse("application/plain");
Charset charset = Util.UTF_8;
if (contentType != null) {
charset = contentType.charset();
if (charset == null) {
charset = Util.UTF_8;
contentType = MediaType.parse(contentType + "; charset=utf-8");
}
}
byte[] bytes = content.getBytes(charset);
return create(contentType, bytes);
}
}
如果有人遇到此问题,请发送不带 POJO Model 类的 json 正文字符串:在此处查看此答案
试试这个:
@POST(“端点”) Observable> myApiCall(@Body String body);