开发者

Access URL with double slash with HttpClient

I'm doing a request on another server like this:

HttpGet req = new HttpGet("http://example.com//foo");
n开发者_如何学Pythonew DefaultHttpClient().execute(req);

However, HttpClient changes example.com//foo to example.com/foo, so the other server (which is not mine) doesn't understand the request.

How can I fix this?


A double-slash is not a legal in the path section of a URI (see RFC2396, sections 3.2, 3.4). The '//' sequence has a defined meaning in the URI, it denotes the authority component (server).

I realize this does not answer your question but the HttpClient is, in fact, behaving in accordance with the HTTP and URL standards. The server your are reading from is not. This appears to be previously reported (https://issues.apache.org/jira/browse/HTTPCLIENT-727) and discarded by the HttpClient team.


It is an illegal URL in fact.

Did you try passing an URI instead of a String? Did you try / \ \ / ? Or the URL might be equivalent to /default.asp/, /index.html/, /./, /?/, example.com/foo/ or the like.

Otherwise you will need to hack the sources.


I also wanted to do same thing and Apache Http client don't support that.

I managed to get it done using a Netty. I wrote http client using Netty and with that I was able send request with double slash(//) in the path. I used SnoopClient as sample.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜