当我将电子邮件地址作为路径变量传递时,它会抛出以下错误
Console --> 2015-02-09 16:30:06,634 WARN - GET request for "http://localhost:8181/abc/users/testabghtmail@gmail.com" resulted in 406 (Not Acceptable); invoking error handler
Exception in thread "main" org.springframework.web.client.HttpClientErrorException: 406 Not Acceptable
at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:91)
at org.springframework.web.client.RestTemplate.handleResponseError(RestTemplate.java:607)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:565)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:521)
at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:439)
at RestClient.main(RestClient.java:35)
我已经尝试了很多案例,所以我终于发现了最后一个域的问题,如 .com 和 .org 这些是国际化域名。因此,如果我通过“testabghtmail@gmail.dom”而不是“testabghtmail@gmail.com”,它将完全正常。
我的代码是
@RequestMapping(value = "users/{emailId:.*}", method = RequestMethod.GET)
public Object searchUser(@PathVariable("emailId") String emailId){
logger.info("Inside search user --> emailId " + emailId);
return userService.findUserByuserId(emailId);
}
答案 0 :(得分:4)
我找不到答案。我认为这是一个http规则,我们最终不能在参数中拥有域名并且可以提出请求。
因此,解决这个问题只是在网址的末尾传递一个斜线,然后就可以了。
喜欢使用“http://localhost:8181/abc/users/testabghtmail@gmail.com/”修改“http://localhost:8181/abc/users/testabghtmail@gmail.com”。并且由于Spring rest架构,它将自动省略最后一个斜杠,您将获得“testabghtmail@gmail.com”作为参数值。
如果你们找到其他东西,请告诉我。