Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
HTTP错误代码415-JAVA中的JSON数组_Java_Arrays_Json_Dialogflow Es_Jettison - Fatal编程技术网

HTTP错误代码415-JAVA中的JSON数组

HTTP错误代码415-JAVA中的JSON数组,java,arrays,json,dialogflow-es,jettison,Java,Arrays,Json,Dialogflow Es,Jettison,我试图通过JAVA生成并发送一个JSON文件,当我试图添加一个带有数组的嵌套对象以适应应用程序的协议(这对问题并不重要)时,由于HTTP错误,JAVA程序无法发送文件,代码415(不支持的媒体类型),这很奇怪,因为当我将生成的JSON复制到指定的应用程序(Google的DialogFlow)中时,它就会工作。换句话说,JSON是功能性的,但JAVA(1.8版)无法识别它。有人知道为什么会这样吗 当JSON文件中没有包含包含JSONArray的部件时,发送请求时不会出现问题(请参阅下面的代码)。我

我试图通过JAVA生成并发送一个JSON文件,当我试图添加一个带有数组的嵌套对象以适应应用程序的协议(这对问题并不重要)时,由于HTTP错误,JAVA程序无法发送文件,代码415(不支持的媒体类型),这很奇怪,因为当我将生成的JSON复制到指定的应用程序(Google的DialogFlow)中时,它就会工作。换句话说,JSON是功能性的,但JAVA(1.8版)无法识别它。有人知道为什么会这样吗

当JSON文件中没有包含包含JSONArray的部件时,发送请求时不会出现问题(请参阅下面的代码)。我曾尝试将内容类型从“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对象和arrayJson数组):


好的,我发现了问题。我应该将arrayJson从JSONArray类型转换为字符串。 换句话说,不是

meta.put("payload", arrayJson);
我应该

meta.put("payload", arrayJson.toString());

或者从一开始就将arrayJson设置为字符串格式。

您看到的错误是什么?线程“main”java.lang.RuntimeException中的异常:失败:HTTP错误代码:415错误代码是conn.getResponseCode()的结果,其中conn是HTTP url连接。您可以在此处打印两个版本的JSON吗(有无修改)?
meta.put("payload", arrayJson.toString());