Ajax服务器415错误,弹簧休息时ajax发布时出现415错误 |
您所在的位置:网站首页 › ajax出错 › Ajax服务器415错误,弹簧休息时ajax发布时出现415错误 |
您获得415状态代码,因为服务器在响应中发送html,而您的客户端需要json。 这可能表示发生了服务器端异常。在这种情况下,应用程序服务器会发回html响应。 你必须使服务器响应json,即使发生了异常,或者让客户端不仅处理json响应,还处理html响应。 我建议你采取第一种方法: @ControllerAdvice public class ExceptionControllerAdvice { @ExceptionHandler(Exception.class) public ErrorResponse handleException(Exception ex) { ErrorResponse err = new ErrorResponse(); err.setStatusCode(); err.setERrorMessage(ex.getMessage()); return err; } } public class ErrorResponse { private int statusCode; private String errorMessage; // getters and setters or make the fields public } @ControllerAdvice就像一个Spring控制器,但它适用于每个请求。 @ExceptionHandler告诉Spring 拦截指定类型的异常,并在带注释的方法中运行代码。 根据异常的类型,您应该在要返回的ErrorResponse对象中设置正确的状态代码。这是一个非常基本的示例,您还可以从默认的Spring异常解析器扩展并覆盖默认行为。有关详细信息,请参阅this article。 修改强> 您可以尝试的另一件事是强制响应的Content-Type始终为application/json,无论http stastus返回。您可以通过在配置消息转换器和JSON序列化/反序列化属性的类中添加拦截器来实现此目的: @Configuration public class ServiceContext extends WebMvcConfigurationSupport { @Override public void configureMessageConverters(List> converters) { MappingJackson2HttpMessageConverter converter = this.getMappingJackson2HttpMessageConverter(); converters.add(converter); } @Bean public MappingJackson2HttpMessageConverter getMappingJackson2HttpMessageConverter() { MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter(); ObjectMapper objectMapper = this.getObjectMapper(); mappingJackson2HttpMessageConverter.setObjectMapper(objectMapper); return mappingJackson2HttpMessageConverter; } @Bean public ObjectMapper getObjectMapper() { JsonFactory jsonFactory = new JsonFactory(); ObjectMapper objectMapper = new ObjectMapper(jsonFactory); objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES); // this is what you need objectMapper.setSerializationInclusion(Include.NON_NULL); // this is to not serialize unset properties return objectMapper; } @Override public void addInterceptors(InterceptorRegistry registry) { ResponseHeadersInterceptor headersInterceptor = this.getResponseHeadersInterceptor(); registry.addInterceptor(headersInterceptor).addPathPatterns("/**"); } @Bean public ResponseHeadersInterceptor getResponseHeadersInterceptor() { return new ResponseHeadersInterceptor(); } } ResponseHeadersInterceptor如下: public class ResponseHeadersInterceptor extends HandlerInterceptorAdapter { @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { response.setContentType(MediaType.APPLICATION_JSON_VALUE + "; "); } } 这样,服务器始终响应JSON。如果你仍然得到404或415,毫无疑问这是由于客户端的一些错误。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |