【发布时间】:2018-01-02 09:24:21
【问题描述】:
我试图击中后控制器:
@Controller
public class CustomerController
{
private static Logger LOG = Logger.getLogger(CustomerController.class);
@Resource(name = "lookupAddressClient")
private LookupAddressClient lookupAddressClient;
@Autowired
private HssCustomerFacade customerFacade;
private final RequestMappingHandlerMapping handlerMapping;
@Autowired
public CustomerController(final RequestMappingHandlerMapping handlerMapping)
{
this.handlerMapping = handlerMapping;
}
@RequestMapping(value = "/endpointdoc", method =
{ RequestMethod.GET, RequestMethod.POST })
public void show(final Model model)
{
model.addAttribute("handlerMethods", this.handlerMapping.getHandlerMethods());
}
@Resource(name = "hssB2BCommerceUserFacade")
protected HssB2BCommerceUserFacade hssB2BCommerceUserFacade;
private static final String ERROR_MSG = "##### Error in HssB2BCommerceUserFacade.getUserdetailsForHSSTraining()-->";
private static final String ERROR_MSG_END = "####";
/* TODO: Need to move this controller to hsscommercewebservice once fix the hsscommerce webservice url issue fixed */
@RequestMapping(value = "/webservice/userDetails", method =
{ RequestMethod.POST }, headers = "Accept=*/*")
public @ResponseBody HSSUserData getUserDetails(@RequestBody final UserCredentials userCredentials,
final HttpServletResponse response)
{
....
}
getUserDetails() 是方法。
用户凭据:
public class UserCredentials {
private String userId;
private String password;
/**
* @return the userId
*/
public String getUserId() {
return userId;
}
/**
* @param userId the userId to set
*/
public void setUserId(String userId) {
this.userId = userId;
}
/**
* @return the password
*/
public String getPassword() {
return password;
}
/**
* @param password the password to set
*/
public void setPassword(String password) {
this.password = password;
}
/* (non-Javadoc)
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return "UserCredentials [userId=" + userId + ", password=" + password
+ "]";
}
Im using PostMan client:
我点击了网址:https://localhost:8011/webservice/userDetails
我的标题:Accept = application/json 内容类型 = 应用程序/json
请求中的我的 JSON 正文:
{
"userCredentials": {
"userId": "asdnasd",
"password": "nasdkask"
}
}
我得到 404 并且无论我通过什么请求,这个请求映射都不会触发。控制器在另一个映射“/endpointdoc”触发时工作。 控制台中没有错误。
请指教。
【问题讨论】:
-
你有
headers = "Accept=*/*"有什么原因吗?怎么样:@PostMapping("/webservice/userDetails") -
我很困惑我的 Accept 值应该是什么。所以我将其设置为 / 并将值设置为 Postman 中的 application/json
-
我相信这就是你得到 404 的原因,RequestMapping 使用
header字段来帮助确定应该调用哪个映射,它与字符串*/*不匹配。如果您想明确说明它与应用程序 JSON 匹配,请使用:@PostMapping(value="/webservice/userDetails", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
标签: json spring web-services controller http-status-code-404