Я делаю запрос на другом сервере, например:
HttpGet req = new HttpGet("http://example.com//foo"); new DefaultHttpClient().execute(req);
Однако HttpClient меняет example.com//foo на example.com/foo, поэтому другой сервер (не мой) не понимаетзапрос.
example.com//foo
example.com/foo
Как я могу это исправить?
Двойная косая черта недопустима в разделе пути URI (см. RFC2396 , разделы 3.2, 3.4).Последовательность «//» имеет определенное значение в URI, она обозначает компонент полномочий (сервер).
Я понимаю, что это не отвечает на ваш вопрос, но HttpClient фактически ведет себя в соответствии сСтандарты HTTP и URL.Сервер, с которого вы читаете, не является.Похоже, об этом сообщалось ранее (https://issues.apache.org/jira/browse/HTTPCLIENT-727) и было отклонено командой HttpClient.
На самом деле это недопустимый URL.
Вы пытались передать URI вместо String?Ты пробовал / \ \ / ?Или URL-адрес может быть эквивалентен /default.asp/, /index.html/, /./, /? /, Example.com/foo/ и т.источники.
Я тоже хотел сделать то же самое, и клиент Apache Http этого не поддерживает.
Мне удалось сделать это, используя Netty .Я написал http-клиент, используя Netty, и с этим я смог отправить запрос с двойной косой чертой (//) в пути.Я использовал SnoopClient в качестве образца.