Я пытаюсь создать и отправить через JAVA файл JSON, и когда я пытаюсь добавить вложенный объект с массивом, чтобы соответствовать протоколу приложения (что не важно для вопроса), Java-программа не может отправитьфайл из-за ошибки HTTP, код 415 (неподдерживаемый тип носителя), что странно, потому что созданный JSON работает, когда я копирую его в целевое приложение (Google DialogFlow).Другими словами, JSON функционален, но JAVA (версия 1.8) не распознает его.У кого-нибудь есть идеи, почему это происходит?
Когда деталь с JSONArray не включена в файл JSON, запрос отправляется без проблем (см. Код ниже).Я попытался изменить тип содержимого с «application / json; charset = utf8» на «application / json; charset = utf-8» или «application / json», но ничего не получилось (эта часть не включена в код, посколькуизменения, которые привели к тому, что JSON не работал, были в блоке ниже).
Часть не работает:
static JSONObject messageToJSON()
{
JSONObject requestJson = new JSONObject();
JSONObject meta= new JSONObject();
JSONObject payload= new JSONObject();
JSONArray arrayJson = new JSONArray();
String messageData="My Message";
try
{
requestJson.put("message", messageData);
requestJson.put("messageType", "html");
payload.put("title", "Thanks");
payload.put("message", "Thank you");
arrayJson.put(payload);
meta.put("contentType", "300");
meta.put("templateId", "6");
meta.put("contentType", "300");
meta.put("payload", arrayJson);
requestJson.put("metadata", meta);
System.out.println(requestJson.toString());
}
catch (JSONException e)
{
e.printStackTrace();
}
return requestJson;
}
Часть работает (без дополнительного слоя в JSON, например, объект JSON полезной нагрузки имассив Json массив JSON):
static JSONObject messageToJSON()
{
JSONObject requestJson = new JSONObject();
JSONObject meta= new JSONObject();
JSONObject payload= new JSONObject();
JSONArray arrayJson = new JSONArray();
String messageData="My Message";
try
{
requestJson.put("message", messageData);
requestJson.put("messageType", "html");
meta.put("contentType", "300");
meta.put("templateId", "6");
meta.put("contentType", "300");
requestJson.put("metadata", meta);
System.out.println(requestJson.toString());
}
catch (JSONException e)
{
e.printStackTrace();
}
return requestJson;
}