将纯文本作为 POST 正文发送会导致改造出现问题
Sending plain text as POST body causes issue in retrofit
我正在向我的后端发出 POST 请求,但我只使用改造获得了 400。
我深入研究了这个问题并意识到,因为我的 POST 正文是一个纯字符串(而不是 JSON),每当我有双引号时,它都会在它后面加上一个反斜杠,然后发送请求。这是电话:
@POST("/endpoint")
Observable<Result<MyResponse>> myApiCall(@Body String body);
我做了一些研究,有人建议我需要添加一个 StringConverterFactory,但这没有帮助(我遵循了这个 link:String converter factory)
我认为改造 github 页面中的 link 已经过时了!
试试这个..
@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);
}
}
试试这个:
@POST("endpoint")
可观察> myApiCall(@Body String body);
我正在向我的后端发出 POST 请求,但我只使用改造获得了 400。 我深入研究了这个问题并意识到,因为我的 POST 正文是一个纯字符串(而不是 JSON),每当我有双引号时,它都会在它后面加上一个反斜杠,然后发送请求。这是电话:
@POST("/endpoint")
Observable<Result<MyResponse>> myApiCall(@Body String body);
我做了一些研究,有人建议我需要添加一个 StringConverterFactory,但这没有帮助(我遵循了这个 link:String converter factory)
我认为改造 github 页面中的 link 已经过时了!
试试这个..
@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);
}
}
试试这个:
@POST("endpoint") 可观察> myApiCall(@Body String body);