Spring MVC 415 Unsupported Media Type

前端 未结 7 1203
再見小時候
再見小時候 2020-11-28 13:01

I am using Spring 3.2 and try to use an ajax post request to submit an array of json objects. If this is relevant, I escaped all special characters.

I am getting an

相关标签:
7条回答
  • 2020-11-28 13:18

    I had the same problem. I had to follow these steps to resolve the issue:

    1. Make sure you have the following dependencies:

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>${jackson-version}</version> // 2.4.3
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>${jackson-version}</version> // 2.4.3
        </dependency>
    

    2. Create the following filter:

        public class CORSFilter extends OncePerRequestFilter {
    
            @Override
            protected void doFilterInternal(HttpServletRequest request,
                                            HttpServletResponse response, FilterChain filterChain)
                    throws ServletException, IOException {
    
                String origin = request.getHeader("origin");
                origin = (origin == null || origin.equals("")) ? "null" : origin;
                response.addHeader("Access-Control-Allow-Origin", origin);
                response.addHeader("Access-Control-Allow-Methods", "POST, GET, PUT, UPDATE, DELETE, OPTIONS");
                response.addHeader("Access-Control-Allow-Credentials", "true");
                response.addHeader("Access-Control-Allow-Headers",
                        "Authorization, origin, content-type, accept, x-requested-with");
    
                filterChain.doFilter(request, response);
            }
        }
    

    3. Apply the above filter for the requests in web.xml

        <filter>
            <filter-name>corsFilter</filter-name>
            <filter-class>com.your.package.CORSFilter</filter-class>
        </filter>
        <filter-mapping>
            <filter-name>corsFilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
    

    I hope this is useful to somebody.

    0 讨论(0)
  • 2020-11-28 13:29

    I had the same problem, I just brought up the below line of code in the spring-servlet.xml, it was at the almost end of this xml file. It worked. <mvc:annotation-driven />

    0 讨论(0)
  • 2020-11-28 13:32

    I had consume="application/json" in my request mapping configuration which expects a json input. When I sent a request which is not a JSON input Spring complained about the 415 Unsupported Media Type. So removing the consume="application/json" worked for me. So look into the request input and the accept media type in your Spring controller method signature. A mismatch would throw the 415 error. This will be most likely the reason for the issue.

    0 讨论(0)
  • 2020-11-28 13:34

    You may try with HttpServletRequest. it does not have any problem

      @RequestMapping(value = "/save-profile", method = RequestMethod.POST,consumes="application/json",headers = "content-type=application/x-www-form-urlencoded")
        public @ResponseBody String saveProfileJson(HttpServletRequest request){
           System.out.println(request.getParameter("profileCheckedValues"));
            return "success";
        }
    
    0 讨论(0)
  • 2020-11-28 13:39

    try changing json to application/json for datatype. And what does your json look like is it valid ? I have never seen json converted to a String[] before, so this coul dalso be the problem.

    0 讨论(0)
  • 2020-11-28 13:41

    1) Add the following dependencies

    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>${jackson-version}</version> // 2.4.3
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>${jackson-version}</version> // 2.4.3
    </dependency>
    

    2) If you are using @RequestBody annotation in controller method make sure you have added following in xml file

    <mvc:annotation-driven />
    

    This should resolve the 415 status code issue.

    0 讨论(0)
提交回复
热议问题