【问题标题】:How to use getRequestUri().getRawQuery() in the url on Java escape如何在 Java 转义的 url 中使用 getRequestUri().getRawQuery()
【发布时间】:2017-07-28 08:48:45
【问题描述】:

因为知道 url 不允许有一些特殊字符,所以需要对其进行编码: : metadata=[{name: serialnumber, value: aaaaaaaaa},{name: register, value: abcde}] 在网址中

我试过这个编码可以工作

String abc= java.net.URLEncoder.encode("http://localhost:9080/myapp/myapp/search?metadata=[{name: serialnumber, value: aaaaaaaaa},{name: register, value: abcde}]", "utf-8");

但是为什么如果使用 info.getRequestUri().getRawQuery() 会失败呢?

public Response search(@Context final UriInfo info, @Context final HttpHeaders httpHeaders) throws Exception {
        String requestURI = java.net.URLEncoder.encode(info.getRequestUri().getRawQuery(), "utf-8");

错误:

Caused by: java.net.URISyntaxException: Illegal character in query

如果我将使用 info.getRequestUri().getRawQuery()

,如何成功编码

【问题讨论】:

  • 如果你用 Java 编程,为什么要为 JavaScript 和 C 添加不相关的语言标签?
  • 你能粘贴异常堆栈跟踪吗?

标签: java url restful-url


【解决方案1】:

这可能是由于元数据中的空白。 你可以 -

  1. 删除空格(metadata=[{name:serialnumber,value:aaaaaaaaa},{name:register,value:abcde}]
  2. 用 + 替换空格 如本文所述question

希望成功!

【讨论】:

  • 感谢@Urvashi Soni,我删除了元数据中的空白,但对于 info.getRequestUri().getRawQuery() 仍然无效,虽然这是有效的:String abc= java.net.URLEncoder.encode ("metadata=[{name:serialnumber,value:aaaaaaaaa},{name:register,value:abcde}", "utf-8");
猜你喜欢
  • 1970-01-01
  • 2010-12-23
  • 1970-01-01
  • 1970-01-01
  • 2011-01-11
  • 2021-05-14
  • 1970-01-01
  • 1970-01-01
  • 2022-01-10
相关资源
最近更新 更多