簡體   English   中英

嘗試使用 Java SpringBoot 中的 REST API 時出現錯誤請求

[英]Getting Bad Request while trying to consume REST API in Java SpringBoot

您好我正在嘗試使用 POST 使用 REST 端點,但出現以下錯誤。 端點在 POSTMAN 中給出了正確的響應,但在 Java 中出現錯誤。 請讓我知道錯誤在哪里。

Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.web.client.HttpClientErrorException$BadRequest: 400 Bad Request: [{
  "error":"unsupported_grant_type",
  "error_description":"The given grant_type is not supported"
}]] with root cause

org.springframework.web.client.HttpClientErrorException$BadRequest: 400 Bad Request: [{
  "error":"unsupported_grant_type",
  "error_description":"The given grant_type is not supported"
}]

下面是代碼:

Controller:

public class MemberController {

private static final Logger log = LoggerFactory.getLogger(MemberController.class);

@Autowired
MemberService memberService;

@PostMapping(value = "/token",  headers = "Accept=application/json")
public String getToken() {
    log.info("Test getToken method");
    return memberService.callTokenService();
}

服務 Class:

public class MemberService {    
    private static final Logger log = LoggerFactory.getLogger(MemberService.class);    
    private RestTemplate restTemplate = new RestTemplate();    
    final String tokenURL = "-------";    

    public String callTokenService() {

        log.info("Inside Service");
    TokenInput input = new TokenInput();
    
    String clientId = "l7xxef159fc30ee8479e9a7dab859c458a4d";
    String clientSecret = "a63d0b4a01b844c0b7e7eb724ef13959";
    String grantType = "client_credentials";
    
    input.setCLIENT_ID(clientId);
    input.setCLIENT_SECRET(clientSecret);
    input.setGRANT_TYPE(grantType);
    

    ResponseEntity<TokenProperties> response = restTemplate.postForEntity(tokenURL,  input, TokenProperties.class);
    HttpStatus status = response.getStatusCode();
    
    log.info("Status: "+status);
    log.info("Response: "+response.toString());

    return response.toString();
    }

    

}

POJO class:

@JsonIgnoreProperties(ignoreUnknown = true)  
public class TokenProperties {    
    String access_token;
    String token_type;
    String expires_in;
    String scope;
    public String getAccess_token()
    {
        return access_token;
    }

    public void setAccess_token(String access_token)
    {
        this.access_token = access_token;
    }

    public String getToken_type()
    {
        return token_type;
    }

    public void setToken_type(String token_type)
    {
        this.token_type = token_type;
    }

    public String getExpires_in()
    {
        return expires_in;
    }
    public void setExpires_in(String expires_in)
    {
        this.expires_in = expires_in;
    }

    public String getScope()
    {
        return scope;
    }

    public void setScope(String scope)
    {
        this.scope = scope;
    }

    @Override
    public String toString() {
        return "{" + "access_token='" + access_token + '\'' + ", token_type=" + token_type + ", expires_in=" + expires_in + '\'' + "scope='" + scope + '}';
    }

}

令牌輸入 POJO:

package com.memberservice_v2;

公共 class 令牌輸入 {

String CLIENT_ID;
String CLIENT_SECRET;
String GRANT_TYPE;

public String getCLIENT_ID() {
    return CLIENT_ID;
}
public void setCLIENT_ID(String cLIENT_ID) {
    CLIENT_ID = cLIENT_ID;
}
public String getCLIENT_SECRET() {
    return CLIENT_SECRET;
}
public void setCLIENT_SECRET(String cLIENT_SECRET) {
    CLIENT_SECRET = cLIENT_SECRET;
}
public String getGRANT_TYPE() {
    return GRANT_TYPE;
}
public void setGRANT_TYPE(String gRANT_TYPE) {
    GRANT_TYPE = gRANT_TYPE;
}

}

誰能幫幫我? 請讓我知道錯誤在哪里。 提前致謝!

您的請求ResponseEntity<TokenProperties> response = restTemplate.postForEntity(tokenURL, null, TokenProperties.class); 到令牌端點不完整。 就我在上述代碼中看到的而言,您沒有傳遞有效負載(令牌請求)。

首先,創建令牌請求並設置適當的屬性,例如客戶端 ID、授權類型等。

TokenRequest tokenRequest = new TokenRequest();
// set the attributes as per the token endpoint

ResponseEntity<TokenProperties>  response = restTemplate.postForEntity(tokenURL,  tokenRequest, TokenProperties.class);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM