将纯文本作为 POST 正文发送会导致改造出现问题

问题描述 投票:0回答:3

我正在向我的后端发出 POST 请求,但仅使用改造时我收到 400。 我深入研究了这个问题并意识到,由于我的 POST 正文是一个普通字符串(而不是 JSON),每当我有双引号时,它都会在其后面添加一个反斜杠,然后发送请求。电话如下:

@POST("/endpoint")
Observable<Result<MyResponse>> myApiCall(@Body String body);

我做了一些研究,人们建议我需要添加一个 StringConverterFactory,但这并没有帮助(我点击了此链接:String转换器工厂

我认为改造 github 页面中的链接已过时!

android retrofit retrofit2
3个回答
3
投票

试试这个..

@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);
        }

    }

0
投票

如果有人遇到此问题,请发送不带 POJO Model 类的 json 正文字符串:在此处查看此答案


-2
投票

试试这个:

@POST(“端点”) Observable> myApiCall(@Body String body);

© www.soinside.com 2019 - 2024. All rights reserved.