Uploaded image for project: 'HttpComponents HttpCore'
  1. HttpComponents HttpCore
  2. HTTPCORE-738

URIBuilder - path with asterisk * is encoded differently compared to java.lang.URI

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Invalid
    • 5.2.1
    • None
    • HttpCore
    • None

    Description

      It seems Apache URIBuilder encodes URL asterisk characters as %2A.

      While  java.lang.URI doesn't:
       

          final URI uri = new URI("http", null, "localhost", 80, "/books*", null, null);
          final URIBuilder uribuilder = new URIBuilder().setScheme("http").setHost("localhost").setPort(80).setPath("/books*");
          final URI result = uribuilder.build();
          assertEquals(uri, result);
       

      =>

      expected: <http://localhost:80/books*> but was: <http://localhost:80/books%2A>
      

      According to https://www.rfc-editor.org/rfc/rfc1738.txt

      Reserved:
      
         Usually a URL has the same interpretation when an octet is
         represented by a character and when it encoded. However, this is not
         true for reserved characters: encoding a character reserved for a
         particular scheme may change the semantics of a URL.
      
         Thus, only alphanumerics, the special characters "$-_.+!*'(),", and
         reserved characters used for their reserved purposes may be used
         unencoded within a URL.
      

      Is the the encoding of asterisk and the whole set of special chars from the RFC above $-_.+!*'() intended inside Apache URIBuilder ?

      My use case is that I'm using Apache HTTP client to send requests to a remote endpoint containing * inside the URL. The server does not recognize the %2A encoding. I have to explicitly decode it back to asterisk * in order to work.

      Attachments

        Activity

          People

            Unassigned Unassigned
            fslev Florin Slev
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: