问题描述
本科。最近,遇到这个问题时,我正在练习开发一些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代替