Android OkHttp addPathSegment 替换斜杠

Android OkHttp addPathSegment replaces slashes

我正在使用 OkHttp 2.4.0。

HttpUrl url = new HttpUrl.Builder()
            .scheme("https")
            .host("www.something.com")
            .addPathSegment("/api/v1/doc")
            .build();

预期的 url 是:https://www.something.com/api/v1/doc

我得到的是:https://www.something.com%2Fapi%2Fv1%2Fdoc

pathSegment 中的“/”替换为“%2F”。为什么会发生这种情况以及如何避免这种情况,因为我得到一个无效的 Url 异常,因为 apache 不允许 url.

中的“%2F”

试试这个:

    HttpUrl url = new HttpUrl.Builder()
        .scheme("https")
        .host("www.something.com")
        .addPathSegment("api")
        .addPathSegment("v1")
        .addPathSegment("doc")
        .build();

删除斜杠并像这样连接段:

HttpUrl url=new HttpUrl.Builder()
    .scheme("https")
    .host("www.something.com")
    .addPathSegment("api")
    .addPathSegment("v1")
    .addPathSegment("doc")
    .build();

这个解决方案更优雅一些,在这种情况下 OkHttp 不会替换斜杠 :)

HttpUrl url = new HttpUrl.Builder()
    .scheme("https")
    .host("www.something.com")
    .addPathSegments("api/v1/doc")
    .build();