当前位置: 首页 > 知识库问答 >
问题:

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

孙文康
2023-03-14

我试图通过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数组):

 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;
 }

共有1个答案

年运珧
2023-03-14

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

meta.put("payload", arrayJson);

我应该

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

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

 类似资料:
  • 问题内容: 我正在用JSON请求调用REST服务,它给出了Http 415“不支持的媒体类型”错误。 请求内容类型设置为(“ Content-Type”,“ application / json; charset = utf8”)。 如果我在请求中不包含Json对象,则效果很好。我正在使用json的google-gson-2.2.4库。 我尝试使用几个不同的库,但这没什么区别。 有人可以帮我解决这

  • 问题内容: 我正在使用JSON请求调用REST服务,并且它以错误响应。 请求内容类型设置为。 如果我在请求中不包含JSON对象,则效果很好。我正在使用JSON库。 我尝试使用几个不同的库,但这没什么区别。 有人可以帮我解决这个问题吗? 这是我的代码: 的值为: 问题答案: 不确定原因,但是从中 删除行解决了该问题。

  • 我用JSON请求调用REST服务,它用HTTP 415“不支持的媒体类型”错误进行响应。 请求内容类型设置为。 如果我在请求中不包含JSON对象,它就可以正常工作。我正在使用JSON库。 我试着使用了几个不同的库,但没有什么不同。 有人能帮我解决这个问题吗? 这是我的代码: 是:

  • Hi im构建一个REST API来上传文件。 我得到以下输出: 发送请求....请求:POST http://localhost:8080/mediahandler/mediahandler/api/image-upload http/1.1请求实体:content-type:multipart/form-data;已执行boundary=einjsk3ipttjp7wf-cxls-uznnng

  • 这里是android开发新手。我正在尝试将一个.gpx文件发布到我的web数据库中。但是,我收到http响应错误415。我知道415意味着不正确的内容类型,我尝试使用的API有这段代码…谢谢你的提示! 这是我的Http请求类 这是我的活动 这是我从httpbin得到的响应 /*I/system.out:服务器回复: I/system.out:{ I/system.out:“args”:{}, i/

  • 我试图在中发送格式的请求。 我尝试了很多来自internet和StackOverflow的代码,但都不起作用。