有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

POST中的java Spring启动API Base64编码错误

我严重地陷入了这样一个境地,当我通过Axiosjs库发送POST请求时

Illegal base64 character 2d error

但当我使用swagger UI时,相同的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) 个答案

  1. # 1 楼答案

    也许您需要修剪(yourString.trim())BASE64编码的字符串,以删除额外的换行符或某些编码器可以添加的换行符。当我在一端使用androids base64类进行编码,在另一端使用spring相关的base64类进行解码时,我也遇到了类似的问题

    我不太熟悉SyncTokenRequest类等,但这可能是帮助您的线索