gpt4 book ai didi

Java - new URL(...) 不会转义第一个字符

转载 作者:行者123 更新时间:2023-11-30 07:48:32 25 4
gpt4 key购买 nike

我正在尝试创建一个链接,打开 Github 上的新问题页面,并在其中填充问题的现有知识。

为此,我使用如下查询参数:

https://github.com/User/Repository/issues/new?title=Some text&body=More Text

效果很好,但是我正在尝试使用 Markdown 格式化文档,并且在通过调用创建新的 URL 后所有符号都被转义

URL url = new URL("https://github.com/User/Repository/issues/new?title=Some text&body=# Header # Another header");

结果是这样的:

https://github.com/User/Repository/issues/new?title=Some text&body=# Header %23 Another header

第二个 # 正在被转义,但第一个不是,我不太明白为什么。

有什么想法吗?

最佳答案

简而言之,URL 解析器正在处理您的第一个 #作为片段(又名 anchor ,例如 <a name="named-anchor"> )。由于根据RFC-3986: Section 3 , 片段必须排在最后并且 #是保留字符,第一个 # 之后的任何字符被假定为该片段的一部分,导致解析器对任何进一步的“无效”字符进行编码,例如您的第二个 # .来自 RFC:

The generic URI syntax consists of a hierarchical sequence of components referred to as the scheme, authority, path, query, and fragment.

URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ]

请注意 fragment最后,由 # 分隔.

处理此问题的最佳方法是:

  1. encode the body query parameter自己或
  2. 使用 HTTP 客户端为您进行转义,例如 RestTemplate 来自 Spring 或Apache HttpComponents .

关于Java - new URL(...) 不会转义第一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49137196/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com