Java Spring 4:Rest Web服务:获取406用于get请求,但不用于Post请求
我有一个web服务/ws/forgetPassword。当我使用get访问它时,我得到了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-
<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;
}
所以
期待尽快收到您的回复。状态代码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;
}