Ошибка кодировки Base64 Spring Boot API в POST - PullRequest
1 голос
/ 12 июля 2020

Я серьезно застрял в такой точке, что когда я отправляю запрос POST через Ax ios js библиотеку, я получаю

Illegal base64 character 2d error

Но когда я использую пользовательский интерфейс swagger, те же данные base64 отправляются успешно. Полностью те же данные, я почти уверен. Потому что я копирую содержимое запроса со страницы проверки браузера и вставляю его на страницу Swagger-ui, и он отлично работает.

const data = {};
data["newToken"] = btoa(token);
data["oldToken"] = btoa(oldToken);

Я пробовал все, что мог. Даже кодирование содержимого в base64.

@PostMapping(value = "/token/sync")
@ApiOperation(value = "", notes = "Sync web socket token")
public void syncSocketToken(@RequestBody  SyncTokenRequest request) {

    tokenService.syncToken(request.getNewToken());
    tokenService.removeToken(request.getOldToken());
}

Это мой контроллер.

export const messageTokenSyncApi = async data =>
  Api.post("services/pobnotification/api/v1/items/token/sync", data);

/// Api.js is here ///

import axios from "axios";
import * as AxiosLogger from "axios-logger";

const axiosInstance = axios.create({
  baseURL: "/",
  withCredentials: true,
  headers: {
    "Content-Type": "application/json"
  }
});

if (process.env.NODE_ENV === "development") {
  axiosInstance.interceptors.request.use(AxiosLogger.requestLogger);
}

export default axiosInstance;

И полезная нагрузка запроса здесь. Строки токенов закодированы в base64.

{"newToken":"Y3l0S2qX05.....1T21mN0c1RFcxSg==","oldToken":""}

Я с нетерпением жду возможности прочитать ваше мнение об этом.

Спасибо

1 Ответ

0 голосов
/ 13 июля 2020

Возможно, вам нужно обрезать (yourString.trim ()) строку в кодировке BASE64, чтобы удалить лишние разрывы строк или такие, которые могут быть добавлены некоторыми кодировщиками. У меня были аналогичные проблемы, когда у меня был класс androids base64 на одном конце для кодирования и связанный с Spring класс base64 на другом конце для декодирования.

Я не очень знаком с классом SyncTokenRequest et c, но, возможно, это поможет вам.

...