Groovy 我如何逃离'/';在获取请求的URI中?
我正试图使用Groovy编写一个脚本,向我们的GitLab服务器发送GET请求,以检索文件。API URI格式为:Groovy 我如何逃离'/';在获取请求的URI中?,groovy,httpbuilder-ng,Groovy,Httpbuilder Ng,我正试图使用Groovy编写一个脚本,向我们的GitLab服务器发送GET请求,以检索文件。API URI格式为: https://githost/api/v4/projects/<namespace>%2F<repo>/files/<path>?ref=<branch> 但是,将%2F重新编码为%252F。我尝试了多种方法来创建URI,这样它就不会在名称空间和repo之间对%2F进行编码,但我无法获得任何工作。它要么对“%”重新编码,要么将其解
https://githost/api/v4/projects/<namespace>%2F<repo>/files/<path>?ref=<branch>
但是,将%2F重新编码为%252F。我尝试了多种方法来创建URI,这样它就不会在名称空间和repo之间对%2F进行编码,但我无法获得任何工作。它要么对“%”重新编码,要么将其解码为文本“/”
如何使用Groovy+http builder ng来设置URI,从而保留编码的“/”?我已经搜索过了,但找不到任何有效的例子
谢谢 可能的解决方法
Gitlab API允许您通过项目id或项目名称进行查询。首先查找项目id,然后查询项目
从1.0.0版本开始,您可以使用URI中的编码字符处理请求。例如:
def result = HttpBuilder.configure {
request.raw = "http://localhost:8080/projects/myteam%2Fmyrepo/myfile.json"
}.get()
注意,示例中使用了
raw
而不是uri
。使用这种方法需要您自己对Uri进行任何其他编码/解码。它是否可以用作${apiNamespace}/${apiRepoName}
?我的意思是在路径“/api/v4/projects/REPO\u ID/repository/files/…”中使用/
而不是编码值。REPO\u ID是名称空间和存储库名称的组合,用斜杠分隔。但是斜杠必须进行编码,这样它就不会被解释为路径分隔符。不幸的是,它不能直接使用。否则,它们是独立的路径元素,API无法识别。这是项目构建/使用URI
对象的方式的问题。似乎没有任何解决方法-我正在进行一个bug修复。在即将发布的1.0.0版本中,这个问题将得到修复(请参阅)
def result = HttpBuilder.configure {
request.raw = "http://localhost:8080/projects/myteam%2Fmyrepo/myfile.json"
}.get()