URL路径参数编码
URL Path Parameter Encoding
我正在为改进的路径参数编码而苦苦挣扎:
http://localhost:8080/nuxeo/api/v1
是我的基础 url.
我有这个电话@GET("path/{documentPath}")
Call<Document> fetchDocumentByPath(@Path("documentPath") String docPath);
作为参数,我设置如下:default-domain/blabla
- 我 运行 针对我的 tomcat 应用程序的查询,我得到了这个答案
Response{protocol=http/1.1, code=400, message=Bad Request, url=http://localhost:8080/nuxeo/api/v1/path/default-domain%2Fblabla}
即使我把 encode = true 说成 "don't encode my parameter, it's already encoded",它仍然在编码。
此外,在改造中,如果我们将 Request request = buildRequest(Example.class, "po/ng");
与以下断言放在一起,此测试 retrofit2.RequestBuilderTest#getWithEncodedPathParam
将不起作用:assertThat(request.url().toString()).isEqualTo("http://example.com/foo/bar/po/ng/");
Tomcat 出于安全原因限制了他的 URL 验证:http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-0450.
所以我想直接在我的路径参数中发送'/',而不是在 %2F 中对其进行编码。我怎样才能实现它?
谢谢!
自parent-2.0.0-beta4
起,@Path
注解的参数现在可以正常使用了。
我正在为改进的路径参数编码而苦苦挣扎:
http://localhost:8080/nuxeo/api/v1
是我的基础 url.我有这个电话
@GET("path/{documentPath}") Call<Document> fetchDocumentByPath(@Path("documentPath") String docPath);
作为参数,我设置如下:
default-domain/blabla
- 我 运行 针对我的 tomcat 应用程序的查询,我得到了这个答案
Response{protocol=http/1.1, code=400, message=Bad Request, url=http://localhost:8080/nuxeo/api/v1/path/default-domain%2Fblabla}
即使我把 encode = true 说成 "don't encode my parameter, it's already encoded",它仍然在编码。
此外,在改造中,如果我们将
Request request = buildRequest(Example.class, "po/ng");
与以下断言放在一起,此测试retrofit2.RequestBuilderTest#getWithEncodedPathParam
将不起作用:assertThat(request.url().toString()).isEqualTo("http://example.com/foo/bar/po/ng/");
Tomcat 出于安全原因限制了他的 URL 验证:http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-0450.
所以我想直接在我的路径参数中发送'/',而不是在 %2F 中对其进行编码。我怎样才能实现它?
谢谢!
自parent-2.0.0-beta4
起,@Path
注解的参数现在可以正常使用了。