Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.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
Java Spring MVC中不支持的媒体类型_Java_Ajax_Spring_Spring Mvc - Fatal编程技术网

Java Spring MVC中不支持的媒体类型

Java Spring MVC中不支持的媒体类型,java,ajax,spring,spring-mvc,Java,Ajax,Spring,Spring Mvc,我有一个简单的登录控制器。在其中,我有一个名为signIn()的操作方法。我正在提交我的凭证,以便通过ajax调用登录网站 这是我的ajax调用函数- var AJAXCaller = function () { }; AJAXCaller.prototype.call = function (type, uri, header, contentType, content, success, error) { var config = new SSKSConfig(); var

我有一个简单的登录控制器。在其中,我有一个名为signIn()的操作方法。我正在提交我的凭证,以便通过ajax调用登录网站

这是我的ajax调用函数-

var AJAXCaller = function () {
};

AJAXCaller.prototype.call = function (type, uri, header, contentType, content, success, error) {
    var config = new SSKSConfig();
    var url = config.getLocation() + uri;
    return jQuery.ajax({
        'type': type,
        'url': url,
        'headers': header,
        'data': JSON.stringify(content),
        'success': success,
        'error': error
    });
};
var caller= new AJAXCaller();
caller.call('POST', '/login', { 'Content-Type': 'application/json' }, 'application/x-www-form-urlencoded', person, fnSuccess, fnError);
其中“人员”数据如:

{"emailId":"aaa@gmail.com","password":"12345"}
登录控制器的signIn()方法代码为-

@PostMapping(value = "/login",consumes = MediaType.APPLICATION_JSON_VALUE)
    public String signIn(@RequestBody Person person) {
        if(person.getEmailId().equals("aaa@gmail.com") && person.getPassword().equals("12345")){
            return "Success";
        }
        else{
            return "Invalid";
        }
    }
我已经创建了SimplePersonPOJO类-

public class Person implements PersonSupport, AddressSupport {
    private String code;
    private String name;
    private String emailId;
    private String password;
    private String contactNo;
    private final Address address = new Address();

    public Person() {
    }

    @Override
    public void setCode(String code) {
        this.code = code;
    }

    @Override
    public String getCode() {
        return this.code;
    }

    @Override
    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String getName() {
        return name;
    }

    @Override
    public void setContactNo(String contactNo) {
        this.contactNo = contactNo;
    }

    @Override
    public String getContactNo() {
        return contactNo;
    }

    @Override
    public void setEmailId(String emailId) {
        this.emailId = emailId;
    }

    @Override
    public String getPassword() {
        return this.password;
    }

    @Override
    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String getEmailId() {
        return emailId;
    }

    @Override
    public String getRoadNo() {
        return address.getRoadNo();
    }

    @Override
    public String getRoadName() {
        return address.getRoadName();
    }

    @Override
    public String getCity() {
        return address.getCity();
    }

    @Override
    public String getPinCode() {
        return address.getPinCode();
    }

    @Override
    public StateList getStateList() {
        return address.getStateList();
    }

    @Override
    public void setRoadNo(String roadNo) {
        address.setRoadNo(roadNo);
    }

    @Override
    public void setRoadName(String roadName) {
        address.setRoadName(roadName);
    }

    @Override
    public void setCity(String city) {
        address.setCity(city);
    }

    @Override
    public void setPinCode(String pinCode) {
        address.setPinCode(pinCode);
    }

    @Override
    public void setStateList(StateList stateList) {
        address.setStateList(stateList);
    }

}

现在,当我尝试登录时,它会给我415个不支持的媒体类型错误。你能告诉我为什么会发生这个错误吗???提前谢谢

您需要在jquery ajax调用中设置
数据类型:“json”

使用

@PostMapping(value = "/login",consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)

由于数据将采用UTF编码,因此您必须使用此值,或者仅删除头和内容类型的“使用”部分

$.ajax({
    type: type,
    url: url,
    data: JSON.stringify(content),
    contentType: "application/json; charset=utf-8",
    dataType: "json",
 ...
});

您通过
contentType='application/x-www-form-urlencoded'
。您仍然可以使用contentType变量,但可以传递正确的值。如果是contentType,则无需使用标头。

从请求映射中删除
consumes=MediaType。应用程序\u JSON\u值,它应该开始工作。

谢谢。我已经解决了这个问题。我已经详细说明了
,但我忘了提到将使用哪个
HttpMessageConverter
。我需要一个对Jackson库(Jackson databind)的依赖项,以便我可以将
HttpRequestBody
转换为
Person
对象,现在,我可以获得对
MappingJackson2HttpMessageConverter
的支持

@我当然已经在jQuery.ajax({'type':type,'url':url,'headers':header?header:{},'contentType':contentType,'data':JSON.stringify(content),'success':success,'error':error});。整个信息是什么?您有两个应用程序/XXX值。您尝试过从命令行执行curl吗?谢谢。我已经解决了这个问题。我已经指定了,但我忘了提到将使用哪个HttpMessageConverter。我需要一个对Jackson库(Jackson databind)的依赖项,这样我就可以将HttpRequestBody转换为Person对象,现在,我可以获得对MappingJackson2HttpMessageConverter的支持