2016-09-29 4 views
1

Мне любопытно, почему это проходит. Например, звездочка ниже не является процентом, закодированным как% 2A.Должен ли HttpUrl.Builder.addPathSegment% 2A кодировать звездочку?

HttpUrl url = new HttpUrl.Builder() 
    .scheme("http") 
    .host("host") 
    .addPathSegment("foo *") 
    .build(); 
assertEquals("http://host/foo%20*", url.toString()); 
assertEquals("/foo%20*", url.encodedPath()); 
+0

сшивающий здесь: https://github.com/square/okhttp/issues/3488 –

ответ

-1

Основные браузеры (Firefox, Safari и Chrome) предпочитают не проценты закодировать * как% 20, когда он находится в отрезке пути, и, следовательно, OkHttp хочет быть в соответствии с этим поведением.

Единственная часть URL, для которой браузеры и OkHttp отличаются друг от друга, - это хост, в котором Safari и OkHttp будут ошибочными, Firefox уходит как есть, а процент Chrome - как% 20.

Research, Github, Blog Post

+0

Вы можете добавить некоторый контекст вокруг вашей ссылки? Помните, что ссылки велики (и часто требуются для атрибуции), но ваш ответ должен быть по-прежнему действительным, и если в будущем ссылки станут мертвыми. Удачи! – Frits

+0

Например, вы отмечаете, что _Research Shows_, можете ли вы добавить, возможно, быстрый прогон того, что было сделано? Каков был исходный результат? Это будет очень далеко, превратив это в отличный ответ :) – Frits

+0

Ссылка на решение приветствуется, но, пожалуйста, убедитесь, что ваш ответ полезен без него: [добавить контекст вокруг ссылки] (// meta.stackexchange.com/a/8259), поэтому ваши друзья-пользователи будут иметь представление о том, что это такое и почему оно есть, а затем укажите наиболее релевантную часть страницы, на которую вы ссылаетесь, в случае недоступности целевой страницы. [Ответы, которые немного больше, чем ссылка, могут быть удалены.] (// stackoverflow.com/help/deleted-answers) – sudo