Использование ResponseEntity для получения ответа Http - PullRequest
1 голос
/ 25 сентября 2019

Я создал класс, который содержит эти строки кода ниже.

private String app_key = "XXXXXXXXXXXXXXXXX";
private String app_secret = "XXXXXXXXXXXXXX";
private String appKeySecret = app_key + ":" + app_secret;
private byte[] bytes = appKeySecret.getBytes(StandardCharsets.ISO_8859_1);
private String auth = Base64.encode(bytes);

private OkHttpClient client = new OkHttpClient();

private Request request = new Request.Builder()
        .url("https://sandbox.safaricom.co.ke/oauth/v1/generate?grant_type=client_credentials")
        .get()
        .addHeader("authorization", "Basic " + auth)
        .addHeader("cache-control", "no-cache")
        .build();

Response response = client.newCall(request).execute();

У меня также есть контроллер с Get Mapping, который выглядит следующим образом

  @GetMapping("/auth_token")
public ResponseEntity<MpesaAuth> getToken(@RequestBody Mauth mAuth){
    return new ResponseEntity<>(mpesaAuth, HttpStatus.OK);
}

Но когда я тестирую конечную точку в почтовом отделении, я получаю следующую ошибку

    "timestamp": "2019-09-25T17:26:07.522+0000",
"status": 400,
"error": "Bad Request",
"message": "Required request body is missing: public org.springframework.http.ResponseEntity<com.findfix.payment.config.Mauth> com.findfix.payment.controllers.PaymentController.getToken(com.findfix.payment.config.MpesaAuth)",
"path": "/api/mypayment/v1/auth_token"
}

Чего мне не хватать.Заранее спасибо.

1 Ответ

1 голос
/ 25 сентября 2019

Get метод не будет иметь тела, поэтому удалите @RequestBody Mauth mAuth из getToken

@GetMapping("/auth_token")
public ResponseEntity<MpesaAuth> getToken(){
    return new ResponseEntity<>(mpesaAuth, HttpStatus.OK);
}

Если вы хотите передать тело, вам нужно использовать @PostMapping или @PutMapping

@PostMapping("/auth_token") // or @PutMapping
public ResponseEntity<MpesaAuth> getToken(@RequestBody Mauth mAuth){
    return new ResponseEntity<>(mpesaAuth, HttpStatus.OK);
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...