Uploaded image for project: 'HttpComponents HttpClient'
  1. HttpComponents HttpClient
  2. HTTPCLIENT-1291

The HttpGet() and likely other method objects should accept only absoluteURI with path specified

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 4.2.2
    • 4.2.3
    • HttpClient (classic)
    • None
    • JRE 1.6.23, Windows 7

    Description

      Current HttpGet ctor accepts the absoluteURI without specified path i.e. just with schema & authority specified. It is somehow handled in the client (on different layer) so request GET is sent with the absolute root path specified. e.g. "GET / HTTP/1.1". The problem is that the HttpGet() constructed by that way doesn't work when the HttpClient is configured with the HTTP proxy. In that case is generated GET request with absolute URI but without the ending slash. e.g "GET http://www.apache.org HTTP/1.1". This is an inconsistent behavior.

      Expected behavior:
      I would suggest that the API is more strict and throws some exception when URI is incorrect. The API is not the edit box of the browser which must be tollerant to the user input. The GET method doesn't make sense with the path unspecified, so at least one slash should be specified in URI argument. This issue concerns also other method objects like HttpPut(), HttpDelete(), etc. I don't think it is a general rule to be applied into HttpUriRequest, but maybe I am wrong.

      e.g.

      HttpGet req = new HttpGet("http://www.apache.org"); // this URI is wrong
      HttpGet req = new HttpGet("http://www.apache.org/"); // URI is O.K.
      

      Attachments

        Activity

          People

            Unassigned Unassigned
            bgabrhelik Bronislav GabrhelĂ­k
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: