Java Spring 4:Rest Web服务:获取406用于get请求,但不用于Post请求

Java Spring 4:Rest Web服务:获取406用于get请求,但不用于Post请求,java,spring,web-services,rest,Java,Spring,Web Services,Rest,我有一个web服务/ws/forgetPassword。当我使用get访问它时,我得到了 <html><head><title>VMware vFabric tc Runtime 2.9.3.RELEASE/7.0.42.A.RELEASE - Error report</title><style><!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-

我有一个web服务/ws/forgetPassword。当我使用get访问它时,我得到了

<html><head><title>VMware vFabric tc Runtime 2.9.3.RELEASE/7.0.42.A.RELEASE - Error report</title><style><!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}HR {color : #525D76;}--></style> </head><body><h1>HTTP Status 404 - </h1><HR size="1" noshade="noshade"><p><b>type</b> Status report</p><p><b>message</b> <u></u></p><p><b>description</b> <u>The requested resource is not available.</u></p><HR size="1" noshade="noshade"><h3>VMware vFabric tc Runtime 2.9.3.RELEASE/7.0.42.A.RELEASE</h3></body></html>
Post方法

@RequestMapping(value = "/forgetPassword", method = RequestMethod.POST)
    public RestResponseWrapper forgotPassword(HttpServletRequest request, HttpServletResponse response) {
        RestResponseWrapper responseWrapper = new RestResponseWrapper();

        try {
            String email = request.getParameter("email");
            logger.debug("Email " + email);
            UserCes userCes = getService().getUserByEmail(email);
            if (userCes != null) {

                String validationCode = RandomStringUtils.randomAlphabetic(40);
                ForgotPassword forgotPassword = new ForgotPassword();
                forgotPassword.setCreatedBy(CesUtility.getUsername());
                forgotPassword.setCreatedOn(DateTimeUtility.getCurrentTime());
                forgotPassword.setEmail(email);
                forgotPassword.setValidationCode(validationCode);
                getBaseCrudService().save(forgotPassword);

                response.setStatus(HttpStatus.OK.value());
                responseWrapper.setHttpResponse(HttpStatus.OK + "");
                responseWrapper.setHttpMessage(HttpStatus.OK.getReasonPhrase());
                responseWrapper.setResetPasswordUrl(getApplicationContext().getMessage("authauth.forgetpassword",
                        new Object[] { validationCode }, Locale.US));

            }else{
                response.setStatus(HttpStatus.NOT_FOUND.value());
                responseWrapper.setHttpResponse(HttpStatus.NOT_FOUND + "");
                responseWrapper.setHttpMessage(HttpStatus.NOT_FOUND.getReasonPhrase());
            }
        } catch (Exception e) {
            responseWrapper.setHttpResponse(HttpStatus.INTERNAL_SERVER_ERROR + "");
            responseWrapper.setHttpMessage(HttpStatus.INTERNAL_SERVER_ERROR.getReasonPhrase());
            response.setStatus(HttpStatus.INTERNAL_SERVER_ERROR.value());
            e.printStackTrace();
        }

        return responseWrapper;
    }
我的Get方法

@RequestMapping(value = "/forgetPassword/{email:.+}", method = RequestMethod.GET)
public RestResponseWrapper forgotPassword(@PathVariable final String email, HttpServletRequest request, HttpServletResponse response) {
    RestResponseWrapper responseWrapper = new RestResponseWrapper();

    try {
        logger.debug("Email " + email);
        UserCes userCes = getService().getUserByEmail(email);
        if (userCes != null) {

            String validationCode = RandomStringUtils.randomAlphabetic(40);
            ForgotPassword forgotPassword = new ForgotPassword();
            forgotPassword.setCreatedBy(CesUtility.getUsername());
            forgotPassword.setCreatedOn(DateTimeUtility.getCurrentTime());
            forgotPassword.setEmail(email);
            forgotPassword.setValidationCode(validationCode);
            getBaseCrudService().save(forgotPassword);

            response.setStatus(HttpStatus.OK.value());
            responseWrapper.setHttpResponse(HttpStatus.OK + "");
            responseWrapper.setHttpMessage(HttpStatus.OK.getReasonPhrase());
            responseWrapper.setResetPasswordUrl(getApplicationContext().getMessage("authauth.forgetpassword",
                    new Object[] { validationCode }, Locale.US));

        }else{
            response.setStatus(HttpStatus.NOT_FOUND.value());
            responseWrapper.setHttpResponse(HttpStatus.NOT_FOUND + "");
            responseWrapper.setHttpMessage(HttpStatus.NOT_FOUND.getReasonPhrase());
        }
    } catch (Exception e) {
        responseWrapper.setHttpResponse(HttpStatus.INTERNAL_SERVER_ERROR + "");
        responseWrapper.setHttpMessage(HttpStatus.INTERNAL_SERVER_ERROR.getReasonPhrase());
        response.setStatus(HttpStatus.INTERNAL_SERVER_ERROR.value());
        e.printStackTrace();
    }
    logger.info("response.getContentType(): " + response.getContentType());
    logger.info(responseWrapper.toString());
    return responseWrapper;
}
所以

  • 为什么我在get请求时获得406
  • 我想使用以下格式的get请求忘记密码:“/ws/forgetPassword”/abc@example.com"

  • 期待尽快收到您的回复。

    状态代码406意味着
    接受
    头被设置为服务器无法交付的类型。例如,如果您设置了
    Accept:application/json
    ,但服务器以
    text/plain
    格式发送响应,通常会返回406错误。

    但正如您所看到的,我没有在任何地方设置此错误。设置在哪里以及如何修复?我在网上搜索了同样的答案,但我并没有摆脱这个问题。我看不出这是没有设置的。您只发布了服务器端代码,标题设置在客户端。您在客户端使用什么来执行请求?我使用web浏览器中的url来获取请求,还使用chrome rest ad don
    @RequestMapping(value = "/forgetPassword/{email:.+}", method = RequestMethod.GET)
    public RestResponseWrapper forgotPassword(@PathVariable final String email, HttpServletRequest request, HttpServletResponse response) {
        RestResponseWrapper responseWrapper = new RestResponseWrapper();
    
        try {
            logger.debug("Email " + email);
            UserCes userCes = getService().getUserByEmail(email);
            if (userCes != null) {
    
                String validationCode = RandomStringUtils.randomAlphabetic(40);
                ForgotPassword forgotPassword = new ForgotPassword();
                forgotPassword.setCreatedBy(CesUtility.getUsername());
                forgotPassword.setCreatedOn(DateTimeUtility.getCurrentTime());
                forgotPassword.setEmail(email);
                forgotPassword.setValidationCode(validationCode);
                getBaseCrudService().save(forgotPassword);
    
                response.setStatus(HttpStatus.OK.value());
                responseWrapper.setHttpResponse(HttpStatus.OK + "");
                responseWrapper.setHttpMessage(HttpStatus.OK.getReasonPhrase());
                responseWrapper.setResetPasswordUrl(getApplicationContext().getMessage("authauth.forgetpassword",
                        new Object[] { validationCode }, Locale.US));
    
            }else{
                response.setStatus(HttpStatus.NOT_FOUND.value());
                responseWrapper.setHttpResponse(HttpStatus.NOT_FOUND + "");
                responseWrapper.setHttpMessage(HttpStatus.NOT_FOUND.getReasonPhrase());
            }
        } catch (Exception e) {
            responseWrapper.setHttpResponse(HttpStatus.INTERNAL_SERVER_ERROR + "");
            responseWrapper.setHttpMessage(HttpStatus.INTERNAL_SERVER_ERROR.getReasonPhrase());
            response.setStatus(HttpStatus.INTERNAL_SERVER_ERROR.value());
            e.printStackTrace();
        }
        logger.info("response.getContentType(): " + response.getContentType());
        logger.info(responseWrapper.toString());
        return responseWrapper;
    }