【问题标题】:encode url with spring rest ful api?用spring restful api编码url?
【发布时间】:2020-04-20 08:07:15
【问题描述】:

我有一个由 spring restful 编写的 api。我用邮递员测试我用参数调用这个api: 内容:60 天`

当我通过下面的函数在后端捕获它时:

Result<List<T>> search(HttpServletRequest request, HttpServletResponse response,@RequestParam(name="search") String search) {
    Map<String, String[]> params = request.getParameterMap();
    return getService().resolve(params);
}

参数内容的值为:

我该如何解决? 更新 :

【问题讨论】:

  • 看不到您在 Postman 中所做的事情,我们如何帮助解决它?我们甚至不知道这是 GET 还是 POST 请求。
  • 我们得到了所需的信息。标头只能接受 ISO-8829-1 而不是 UTF。它需要 RFC2047 实现。
  • 我已经更新了更多细节。谢谢
  • 您是否尝试使用类 Object 来映射请求参数而不是通过 HttpServletRequest 获取?例如:public class SearchRequest { private String content; public void setContent(String content) { this.content = content; } public String getContent() { return this.content; } }Result> search(HttpServletRequest request, HttpServletResponse response,@RequestParam(name="search") String search, SearchRequest searchReq) { // TODO view searchReq here }

标签: java spring spring-boot restful-url


【解决方案1】:

days 之后的Unicode Character 'RIGHT SINGLE QUOTATION MARK' (U+2019)

在 UTF-8 中,该字符被编码为字节 E2 80 99

在 ISO-8859-1 中,这些字节是 â 和两个 不可打印 字符。

结论: Postman 以 UTF-8 格式发送内容,但服务器以 ISO-8859-1 格式读取。

现在您可以尝试找出存在这种差异的原因,但您真的打算在您的内容中使用“右单引号”吗?

【讨论】:

  • 是的“右单引号”必须包含在我的 API 参数中,我不知道如何解决这个问题。
猜你喜欢
  • 2015-01-26
  • 1970-01-01
  • 2019-05-30
  • 2013-11-07
  • 2014-01-20
  • 2012-06-02
  • 2014-04-06
  • 2014-12-08
  • 2015-07-04
相关资源
最近更新 更多