retrofit
retrofit copied to clipboard
Invalid Malformed URL
The path of a URL contains a colon symbol which is causing the call to fail.
Using version com.squareup.retrofit2:retrofit:2.5.0
Code:
public interface ClientApi {
@PUT("user:email={email}/login")
Call<ResponseBody> login(@Path("email") String email, @Body String pass);
@PUT("./user:email={email}/login")
Call<ResponseBody> loginRelative(@Path("email") String email, @Body String pass);
...
Regular path Stack trace:
Caused by: java.lang.IllegalArgumentException: Malformed URL. Base: https://test.com/restapi/, Relative: user:[email protected]/login
at retrofit2.RequestBuilder.get(RequestBuilder.java:221)
at retrofit2.RequestFactory.create(RequestFactory.java:111)
at retrofit2.OkHttpCall.createRawCall(OkHttpCall.java:190)
at retrofit2.OkHttpCall.execute(OkHttpCall.java:173)
at Service.login(Service.java:38)
Think the code needs to treat the relative portion of the URL like an absolute URL when parsing.
Relative path
Using a retaliative path annotation ./
does not solve this issue.
Stack trace:
Caused by: java.lang.IllegalArgumentException: @Path parameters shouldn't perform path traversal ('.' or '..'):
at retrofit2.RequestBuilder.addPathParam(RequestBuilder.java:113)
at retrofit2.ParameterHandler$Path.apply(ParameterHandler.java:99)
at retrofit2.RequestFactory.create(RequestFactory.java:108)
at retrofit2.OkHttpCall.createRawCall(OkHttpCall.java:190)
at retrofit2.OkHttpCall.execute(OkHttpCall.java:173)
Bug report unit test https://gist.github.com/nathancassano/f675e2fd1c64d4b6002afea37bf5fee4
Yeah this should be allowed.
cc @swankjesse
can I work on this issue?
No, we need to study to learn what the correct behavior is.
Is there any news about this issue? This problem causes a version lock to 2.4.0.
Hi, any update on this?
Hi any update on this? colon in a path variable seem to be encoded as %253A
instead of just %3A
.
Hey can I pick this issue?
Still an isue....
The following interface doesn't even exists in the repository
I am using the latest retrofit version and this issue persists. Can you specify the specific Interface you say does not exist, or would it be better for me to find teh line in retrofit that generates the error msg?
Still an isue....