Как перенаправить запрос как пост, используя ResponseEntity - PullRequest
0 голосов
/ 27 марта 2019

Я пытаюсь включить ответ от другого URL-адреса от ResponseEntity для 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;
    }
...