提交 9d6e1af1 编写于 作者: J Jake Wharton

Merge pull request #1583 from square/jw/malformed-resolve

Throw nice message when resolved URL is malformed.
......@@ -141,6 +141,10 @@ final class RequestBuilder {
if (relativeUrl != null) {
// Do a one-time combination of the built relative URL and the base URL.
urlBuilder = baseUrl.newBuilder(relativeUrl);
if (urlBuilder == null) {
throw new IllegalArgumentException(
"Malformed URL. Base: " + baseUrl + ", Relative: " + relativeUrl);
}
relativeUrl = null;
}
......@@ -175,6 +179,10 @@ final class RequestBuilder {
} else {
// No query parameters triggered builder creation, just combine the relative URL and base URL.
url = baseUrl.resolve(relativeUrl);
if (url == null) {
throw new IllegalArgumentException(
"Malformed URL. Base: " + baseUrl + ", Relative: " + relativeUrl);
}
}
RequestBody body = this.body;
......
......@@ -1885,6 +1885,38 @@ public final class RequestBuilderTest {
assertThat(request.body().contentType().toString()).isEqualTo("text/not-plain");
}
@Test public void malformedAnnotationRelativeUrlThrows() {
class Example {
@GET("ftp://example.org")
Call<ResponseBody> get() {
return null;
}
}
try {
buildRequest(Example.class);
fail();
} catch (IllegalArgumentException e) {
assertThat(e).hasMessage(
"Malformed URL. Base: http://example.com/, Relative: ftp://example.org");
}
}
@Test public void malformedParameterRelativeUrlThrows() {
class Example {
@GET
Call<ResponseBody> get(@Url String relativeUrl) {
return null;
}
}
try {
buildRequest(Example.class, "ftp://example.org");
fail();
} catch (IllegalArgumentException e) {
assertThat(e).hasMessage(
"Malformed URL. Base: http://example.com/, Relative: ftp://example.org");
}
}
private static void assertBody(RequestBody body, String expected) {
assertThat(body).isNotNull();
Buffer buffer = new Buffer();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册