关于Android API调用,我没有在json中格式化请求吗? 也许是愚蠢的XD

问题描述

本科。最近,遇到这个问题时,我正在练习开发一些Android应用程序。我需要使用以下给定格式启动API调用:API request headers and body example

然后我选择使用okhttp3发出请求,这是我的代码:

RequestBody formBody = new FormBody.Builder()
                    .add("reply","\""+my_string+"\"")
                    .add("type","0")
                    .build();
Request request = new Request.Builder().url("https://cbs-ext.cn-north-4.myhuaweicloud.com/v1/" + projectid + "/taskbot/voicecall/bots/" + botid + "/sessions/" + sessionid)
                    .addHeader("X-Auth-Token",Xauth)
                    .addHeader("Content-Type","application/json")
                    .post(formBody).build();

好吧,与给定格式相比,我认为我的请求格式没有任何问题,但是连接总是返回错误代码:

{"error_code":"CBS.6852","error_msg":"unsupported mediaType,content-type must be application/json"}

我已经检查了所有其他行和错误信息,并确认问题是由我的POST请求引起的。

您可以看到API告诉我我的请求未使用json格式化。所以我想问为什么会发生这个错误?我在提出请求时犯了一些错误?还是可以说我的请求正文根本不是json格式的?我应该如何处理?

很抱歉,我只是在Android开发和API调用的初级阶段,所以也许在你们的XD眼里这个问题太愚蠢了。但是,我仍然希望看到您的发言,我需要一个解决方案,谢谢XD。

解决方法

FormBody表示application / x-www-form-urlencoded,因此您实际上需要使用RequestBody.create代替

请参见OkHttp Post Body as JSON

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...