改造:无法为类创建 @Body 转换器

新手上路,请多包涵

我需要通过改造 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。它适合我

原文由 kkost 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.4k
2 个回答

解决方案: 在您的界面中使用 next 声明 body 值:

@Body RequestBody body 并包装字符串 JSON 对象:

RequestBody body = RequestBody.create(MediaType.parse("application/json"), obj.toString());

原文由 kkost 发布,翻译遵循 CC BY-SA 3.0 许可协议

您有可能为多个变量/字段/标签保留相同的 @SerializedName(”“)

原文由 Mohd Qasim 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题