我正试图向我的服务器发送一个POST请求(使用ApacheHttpClient 4.5),其中包含一组JSON参数。我已经回答了一些这样的问题,但我遇到了一些问题。
当我使用javascript控制台发送请求时,它工作正常!这样地:
//Using JS console, I send a POST request and it works.
$.post('/createConfigData', {
"tailSign": "A7ALE",
"active": "Y"
});
//Get back 201
当我使用Apache HTTPClient 4.5尝试执行与上述相同的操作时,我返回415个不受支持的媒体类型:
HttpPost httppost = new HttpPost('/createConfigData');
String jsondata = "{\"tailSign\": \"A7ALE\",\"active\": \"Y\"}";
StringEntity jsonparam = new StringEntity(jsondata);
jsonparam.setContentType("application/json;charset=utf-8");
jsonparam.setChunked(true);
httppost.addHeader("content-type", "application/x-www-form-urlencoded;charset=UTF-8");
httppost.setEntity(jsonparam);
httpresponse = httpclient.execute(target, httppost);
我从工作请求中得到的数据是:
"*/*"
我对在哪里设置内容类型有点困惑,无论是实体还是http://www.
=======================
将httpost的内容类型设置为json会给我带来400
HttpPost httppost = new HttpPost('/createConfigData');
String jsondata = "{\"tailSign\": \"A7ALE\",\"active\": \"Y\"}";
StringEntity jsonparam = new StringEntity(jsondata);
jsonparam.setChunked(true);
httppost.addHeader("content-type", "application/json;charset=UTF-8");
httppost.setEntity(jsonparam);
httpresponse = httpclient.execute(target, httppost);
将httpost的内容类型设置为x-www-form-urlencoded会给我带来415
HttpPost httppost = new HttpPost('/createConfigData');
String jsondata = "{\"tailSign\": \"A7ALE\",\"active\": \"Y\"}";
StringEntity jsonparam = new StringEntity(jsondata);
jsonparam.setChunked(true);
httppost.addHeader("content-type", "application/x-www-form-urlencoded;charset=UTF-8");
httppost.setEntity(jsonparam);
httpresponse = httpclient.execute(target, httppost);
我也试着添加了这一行:
httppost.addHeader("Accept", "*/*");
==================
使用wireshark,我发现400个错误请求中有一条错误消息!只是我的JSON不正确。
HTTP/1.1 400 Bad Request
Server: Apache-Coyote/1.1
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Date: Wed, 19 Oct 2016 21:33:25 GMT
Proxy-Connection: Keep-Alive
Connection: Keep-Alive
{"code":400,"message":"Field ConfigName is Null, Invalid Value for Seat Count, Missing counts for DSU, ICMT, SVDU, TPMU, Login user details not found, Please enter valid lruData","fleetData":{"airlineData":null,"dimAircraftJson":null,"configData":null}}
由于您已将内容类型头覆盖到application/x-www-form-urlencoded,因此您将获得415个不受支持的媒体类型;字符集=UTF-8。只需将其更改为:
HttpPost httppost = new HttpPost('/createConfigData');
String jsondata = "{\"tailSign\": \"A7ALE\",\"active\": \"Y\"}";
StringEntity jsonparam = new StringEntity(jsondata);
jsonparam.setChunked(true);
httppost.addHeader("content-type", "application/json;charset=UTF-8");
httppost.setEntity(jsonparam);
httpresponse = httpclient.execute(target, httppost);
我必须做的是,我必须在给定的URL中发布JSON数据,其中JSON看起来像 和我的功能 当我张贴它的时候;我得到一个错误 “远程服务器返回错误:(415)不支持的媒体类型。” 有人知道吗;我错在哪里?
JS代码如下所示。 与URL映射的Spring控制器中的方法如下所示。 服务器按照问题的意思进行响应, 整个文件如下所示。 当我删除一个方法参数,并简单地使用来接受请求参数时,它就起作用了。
我在泽西岛有一个Rest服务,我正在使用邮递员实现 我在邮递员中得到以下错误:
问题内容: 自数小时以来,我一直在尝试纠正http错误,但它仍显示不支持的页面。我在邮递员中添加标题。 这是我的Java代码 这是我的档案 问题答案: 通过和如何在响应流和请求流之间对对象进行序列化和反序列化。 将会发生的是,将从提供者的注册表中进行搜索,以查找可以处理的媒体类型。如果找不到,则Jersey无法处理该请求,并将发送415不支持的媒体类型。通常,你还应该在服务器端记录一个异常。不知道
我已经创建了一个示例web服务来进行post调用。 我使用的是Jersey JAX-RS和Maven。
问题内容: 我正在使用JSON请求调用REST服务,并且它以错误响应。 请求内容类型设置为。 如果我在请求中不包含JSON对象,则效果很好。我正在使用JSON库。 我尝试使用几个不同的库,但这没什么区别。 有人可以帮我解决这个问题吗? 这是我的代码: 的值为: 问题答案: 不确定原因,但是从中 删除行解决了该问题。