我正在尝试将客户端发送的JSON对象用于Map(或JSON对象)。我使用的是Jersey2.22.1,默认情况下它使用的是MOXY。试过HashMap如下图所示,但没有运气。它给出415错误 - "不支持的媒体类型"
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public List<Task> addTask(HashMap<String,Object> dynamicParam){
通过包装Map尝试使用自定义类。再次出现同样的错误。有人可以帮助我,让我知道如何处理地图。
@XmlRootElement
public class DynamicFormData {
Map<Object,Object> data;
public Map<Object, Object> getData() {
return data;
}
public void setData(Map<Object, Object> data) {
this.data = data;
}
作为临时解决方案,我使用下面的代码。但是想知道如何使用Map
正确地做到这一点@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public List<Task> addTask(String dynamicParam){
log.info("addTask Start");
Gson gson = new Gson();
Map<String, Object> map = new HashMap<String, Object>();
map = (Map<String, Object>)gson.fromJson(dynamicParam, map.getClass());
答案 0 :(得分:0)
您的客户端未发送Accept: application/json
标题。
答案 1 :(得分:0)
将<form action="https://differentdomain.com/" id="myform" class="fs-form fs-form-full" autocomplete="off">
<input class="fs-anim-lower" id="q1" type="text" placeholder="aa00" required/>
<input class="fs-anim-lower" id="q2" type="text" placeholder="bb00" required/>
<button id="submit" class="fs-submit" type="submit">see result</button>
</form>
与@Consumes({MediaType.APPLICATION_FORM_URLENCODED})
结合使用
工作范例:
JS-客户:
javax.ws.rs.core.MultivaluedMap
新泽西州代码:
function postCalling(){
$.ajax({
type: 'POST',
url: "<url>",
contenttype: "application/json",
datatype: "json",
data: {
'paramOne': 'ONE',
'paramTwo' : 'TWO'
},
success: function (data, status, jqXHR) {
alert('It worked!: '+JSON.stringify(data));
},
error: function (jqXHR, status) {
alert('didnt work!');
}
});