2015-07-13 100 views
4

我正在使用OkHttp 2.4.0。Android OkHttp addPathSegment替換斜線

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

預期網址是:https://www.something.com/api/v1/doc

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

的 「/」,在pathSegment被替換爲 「%2F」。爲什麼會發生這種情況,以及如何避免這種情況,因爲我得到無效的Url異常,因爲Apache不允許在URL中使用「%2F」。

+0

該方法的名稱是'pathSegments'或'pathSegment'?我也很確定結果是'https:// www.something.com /%2Fapi%2Fv1%2Fdoc'不是'https:// www.something.com%2Fapi%2Fv1%2Fdoc' – Selvin

回答

6

試試這個:

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

你也可以做'.addPathSegments(「api/v1/doc」);'(注意S) – Akhu

1

刪除斜線並連接這樣的片段:

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

這種解決方案更優雅一點,並OkHttp不會在這種情況下替換斜槓:)

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