URL доступа с двойной косой чертой с помощью HttpClient - PullRequest
4 голосов
/ 23 сентября 2011

Я делаю запрос на другом сервере, например:

HttpGet req = new HttpGet("http://example.com//foo");
new DefaultHttpClient().execute(req);

Однако HttpClient меняет example.com//foo на example.com/foo, поэтому другой сервер (не мой) не понимаетзапрос.

Как я могу это исправить?

Ответы [ 3 ]

3 голосов
/ 23 сентября 2011

Двойная косая черта недопустима в разделе пути URI (см. RFC2396 , разделы 3.2, 3.4).Последовательность «//» имеет определенное значение в URI, она обозначает компонент полномочий (сервер).

Я понимаю, что это не отвечает на ваш вопрос, но HttpClient фактически ведет себя в соответствии сСтандарты HTTP и URL.Сервер, с которого вы читаете, не является.Похоже, об этом сообщалось ранее (https://issues.apache.org/jira/browse/HTTPCLIENT-727) и было отклонено командой HttpClient.

2 голосов
/ 23 сентября 2011

На самом деле это недопустимый URL.

Вы пытались передать URI вместо String?Ты пробовал / \ \ / ?Или URL-адрес может быть эквивалентен /default.asp/, /index.html/, /./, /? /, Example.com/foo/ и т.источники.

0 голосов
/ 31 октября 2014

Я тоже хотел сделать то же самое, и клиент Apache Http этого не поддерживает.

Мне удалось сделать это, используя Netty .Я написал http-клиент, используя Netty, и с этим я смог отправить запрос с двойной косой чертой (//) в пути.Я использовал SnoopClient в качестве образца.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...