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 楼答案
也许您需要修剪(yourString.trim())BASE64编码的字符串,以删除额外的换行符或某些编码器可以添加的换行符。当我在一端使用androids base64类进行编码,在另一端使用spring相关的base64类进行解码时,我也遇到了类似的问题
我不太熟悉SyncTokenRequest类等,但这可能是帮助您的线索