如何使用ResponseEntity将请求重定向为发布

时间:2019-03-27 12:03:43

标签: spring spring-security http-redirect

我试图包括来自ResponseEntity的其他URL的响应以进行oauth授权,但由于无法指定请求方法而失败。

下面是代码

@RequestMapping(value = "/login/otp", method = RequestMethod.POST, produces = {MediaType.APPLICATION_JSON_UTF8_VALUE})
    @ResponseBody
    public ResponseEntity<?> getOTP(@Valid @RequestBody String loginDtls,UriComponentsBuilder ucBuilder) {
        LoginDAO login = null;
        ResponseEntity<?> resp = null;
        try {
            ObjectMapper mapper = new ObjectMapper();
            String userId = "";
            try {
                JsonNode root = mapper.readTree(loginDtls);
                userId = root.get("userId").textValue();                 
            } catch (IOException e) {
                e.printStackTrace();
            }   
            System.out.println("UserController : getting otp for contact "+ userId);
            login = loginService.findByUserId(userId);
            if (login==null) {
                System.out.println("A UserDAO with name " + userId + " does not exist");
                resp = new ResponseEntity<String>(HttpStatus.NOT_FOUND);
            }
            String otp = GenUtil.generateOTP();
            LoginDAO loginUpd = new LoginDAO(login);
            loginUpd.setOtp(otp);
            loginUpd.setOtpTimestamp(new Timestamp(System.currentTimeMillis()));
            loginService.updateLogin(loginUpd);
            System.out.println(loginUpd);
            resp = getAuthenticated(ucBuilder);
            System.out.println(resp.getStatusCodeValue());
            System.out.println(resp.getBody());
        }catch(Exception e) {
            e.printStackTrace();
        }       
        resp =  new ResponseEntity<String>(login.toString(), HttpStatus.OK);
        return resp;
    }
    private ResponseEntity<?> getAuthenticated(UriComponentsBuilder ucBuilder){
        HttpHeaders headers = new HttpHeaders();
        URI uri= ucBuilder.path("/oauth/token"+PASSWORD_GRANT).build().toUri();
        List<MediaType> accept = new ArrayList<MediaType>();
        accept.add(MediaType.APPLICATION_JSON_UTF8);
        headers.setAccept(accept);
        headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
        headers.setBasicAuth("my-trusted-client", "secret");
        System.out.println(headers);    
        ResponseEntity<?> resp = ResponseEntity.created(uri).headers(headers).build();
        return resp;
    }

0 个答案:

没有答案