Как передать параметры из Cordova HTTP в контроллер Spring - PullRequest
0 голосов
/ 01 октября 2019

В моем приложении ionic 5.0.0 я использую нативный HTTP-интерфейс Cordova для выполнения остальных вызовов. Ниже приведен фрагмент кода моей функции выхода из системы.

Но когда я выполняю эту функцию, я получаю следующую ошибку.

Аргумент "advanced-http: \" data \ "поддерживаеттолько следующие типы данных: String "

  logout() {
    this.setData("url", "/web/oauth/revoke-token");
    let apiUrl = this.getBaseUrl() + this.getData("url");
    const headers = {
      'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
      'Authorization': 'Basic Y2hyR3liUnBxQUR3X2VDemw5dzc0cHU4dXNnYTpKdmZ1azgyYnBUQlVnNDJ6NU1hZFhXOWJPeElh'
    };
    const params = {
      'companyId': this.getData("COMPANY_ID"),
      'token': this.getData("ACCESS_TOKEN"),
      'client_id': this.getData("CLIENT_ID"),
      'token_type_hint': 'access_token'
    };
    this.nativeHttp.post(apiUrl, params, headers).then(response => {
     console.log("success response: "+response);
    })
    .catch(error => {
      console.log("error response: "+error);
    });
    console.log("finished");
  }

Вот мой контроллер Spring, который получает параметры.

	@RequestMapping(value = "/oauth/revoke-token", method = RequestMethod.POST)
	@ResponseBody
	public ResponseEntity<Object> logout(HttpServletRequest request) {
		String clientId = request.getParameter(OAuth2Constants.CLIENT_ID);
		String token = request.getParameter(OAuth2Constants.TOKEN);
		String tokenTypeHint = request.getParameter(OAuth2Constants.TOKEN_TYPE_HINT);
		String companyId = request.getParameter(WebConstants.COMPANY_ID_PARAMETER);
    }

Но, к сожалению, все параметры получает в контроллере значение NULL.

Может кто-нибудь мне помочь?

1 Ответ

0 голосов
/ 07 октября 2019

Наконец-то я нашел решение проблемы. Просто установите сериализатор данных для http-запроса следующим образом, прежде чем выполнять почтовый вызов.

this.nativeHttp.setDataSerializer( "urlencoded" );
...