【问题标题】:How to handle "@" in password of java URI?java - 如何处理java URI密码中的“@”?
【发布时间】:2015-09-02 07:42:48
【问题描述】:

我有一个 URL “ssh://root:zstackqwe:!@#@172.16.36.184”,其中在密码部分包含“@”和“:”。我使用 java.net.URI 来包装字符串,如:

URI u1 = new URI("ssh://root:zstackqwe:!@#@172.16.36.184/");
System.out.println(u1.getAuthority());
System.out.println(u1.getHost());

输出是:

root:zstackqwe:!@
null

权限部分正确,而主机部分返回null。应该如何正确处理那些特殊字符?

更新:

字符串“ssh://root:zstackqwe:!@#@172.16.36.184”是一个没有任何编码的原始字符串,从 API 传递到我的应用程序。我无法使用 UIR(string) 以外的构造函数。所以我正在寻找一种方法来处理原始字符串,使其与 jave.net.URI 一起使用。

【问题讨论】:

  • 可能转义字符串
  • 我遇到了这个问题,但我记不清这是否是正确的解决方案:您尝试过zstackqwe\\:!\\@# 吗?
  • 试试:URI u1 = new URI("ssh://root:zstackqwe:!@\\#@172.16.36.184/");
  • 我无法使用除 UIR(string) 之外的构造函数,因为字符串是由 API 传递的。
  • 如果您是从某个 API 获得的,那么您可以尝试将其拆分为自己的部分,然后使用以下答案中的其他方法。

标签: java uri


【解决方案1】:

如果是 URI,则使用百分比编码。

URI u1 = new URI("ssh://root:zstackqwe%3a!%40%23@172.16.36.184/");

【讨论】:

    【解决方案2】:

    所以该字符串来自其他人:

    格式错误。让他们提交格式正确的 URL。

    【讨论】:

      猜你喜欢
      • 2017-06-11
      • 1970-01-01
      • 1970-01-01
      • 2014-03-11
      • 2021-01-04
      • 2014-03-05
      • 2013-03-20
      • 1970-01-01
      • 2016-01-10
      相关资源
      最近更新 更多