我需要通过改型2发送下一个json:
{
"Inspection": {
"UUID": "name",
"ModifiedTime": "2016-03-09T01:13",
"CreatedTime": "2016-03-09T01:13",
"ReviewedWith": "name2",
"Type": 1,
"Project": {
"Id": 41
},
"ActionTypes": [1]
}
}
带有标题:Authorization: access_token_value
我试过这个:
//header parameter
String accessToken = Requests.getAccessToken();
JsonObject obj = new JsonObject();
JsonObject inspection = new JsonObject();
inspection.addProperty("UUID","name");
inspection.addProperty("ModifiedTime","2016-03-09T01:13");
inspection.addProperty("CreatedTime","2016-03-09T01:13");
inspection.addProperty("ReviewedWith","name2");
inspection.addProperty("Type","1");
JsonObject project = new JsonObject();
project.addProperty("Id", 41);
inspection.add("Project", project);
obj.add("Inspection", inspection);
Retrofit restAdapter = new Retrofit.Builder()
.baseUrl(Constants.ROOT_API_URL)
.addConverterFactory(GsonConverterFactory.create())
.addConverterFactory(ScalarsConverterFactory.create())
.build();
IConstructSecureAPI service = restAdapter.create(IConstructSecureAPI.class);
Call<JsonElement> result = service.addInspection(accessToken, obj);
JsonElement element = result.execute().body();
但每次我都收到例外:java.lang.IllegalArgumentException: Unable to create @Body converter for class com.google.gson.JsonObject (parameter #2)
我该怎么发送呢?或者我该怎么做呢?你甚至可以给我提供一个简单的参数,比如String
里面有json,它会适合我的
9条答案
按热度按时间au9on6nz1#
**解决方案:**使用next在接口中声明body值:
@Body RequestBody body
并 Package 字符串JSON对象:RequestBody body = RequestBody.create(MediaType.parse("application/json"), obj.toString());
sdnqo3pr2#
您有可能将同一个
@SerializedName("")
保存为多个vairable/fields/tags
gpnt7bae3#
您可以在像这样创建Retrofit时指定转换器
zf9nrax14#
如果这是由于
@SerializedName
导致的,请确保其不重复。例如,在以下情况下将抛出此错误:(注:
bookingId
通过两次)但是,这是正确的:
qxsslcnc5#
Body
* 使用单个请求对象,请按如下方式声明请求对象我假设您的服务
IConstructSecureAPI
端点是:然后你就可以说出你的愿望
Response
。检查这个answer,它使用
HashMap
代替类。9rnv2umw6#
当我升级到Java 17时,我一直收到这个错误,在Java 11上仍然工作正常。
以下是对我有效的方法
Utils.java
中放置了一个调试点。java.lang.reflect.InaccessibleObjectException: Unable to make field private final byte java.time.LocalTime.hour accessible: module java.base does not "opens java.time" to unnamed module @35e2d654
--add-opens java.base/java.time=ALL-UNNAMED
作为JVM参数。kyvafyod7#
在我的例子中,我只是忘记应用Gradle的 kotlinx.serialization 插件,因此没有生成序列化器的代码。
jfgube3f8#
您可以使用拦截器在每个请求中发送授权标头
nfeuvbwi9#
我正在使用
Moshi
和Retrofit
,我的问题是我忘记为@body
的DTO
类添加@JsonSerializable
注解。您应该像这样添加此注解: