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

时间:2016-04-20 22:01:20

标签: android retrofit retrofit2

我向我的后端发出了POST请求,但我只是使用改造获得了400。 我更深入地研究了这个问题并实现了,因为我的POST主体是一个普通的字符串(不是JSON),每当我有双引号时,它会在它后面放一个反斜杠然后发送请求。这是电话:

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

我做了一些研究,人们建议我需要添加一个StringConverterFactory,但这没有帮助(我按照这个链接:String converter factory

我认为改装github页面中的链接已经过时了!

2 个答案:

答案 0 :(得分: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);
        }

    }

答案 1 :(得分:0)

试试这个:

@POST(&#34;端点&#34) 可观察到的&GT; myApiCall(@Body String body);