将纯文本作为 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);