It seems that using the different constructors (encoding, decoding) of
java.net.URI helps in most cases I have to deal with (for example I can
pass it one "directory" in a longer path with encoded characters to the
single-String constructor to decode, or use multi-parameter constructors
for decoding).  It doesn't help me with URL encoding query parameters
because it won't encode "?", "=", or "&" (it looks like it's designed to
operate on the full query including -- without transforming -- the
different separators).

For encoding query parts, I resorted to using URLEncoder and a quick pass
over that to replace the remaining "+" characters to %20 for (hopefully)
better compliance and interoperability (not ambiguous).

I did consider using Oleg's suggestion of URIBuilder, but it doesn't appear
to cover matrix parameters on path segments (even if it does have helpers
for query parameters).

Thanks,
Christopher



On 25 March 2014 01:03, sebb <seb...@gmail.com> wrote:

> On 24 March 2014 23:01, Christopher BROWN <br...@reflexe.fr> wrote:
> > Hello,
> >
> > This article:
> >
> http://blog.lunatech.com/2009/02/03/what-every-web-developer-must-know-about-url-encoding
> >
> > ...refers to the pitfalls of using Java's standard URLEncoder /
> URLDecoder
> > classes for anything other than *form* encoding.  In particular, it is
> > unsuitable for path segments, and has no concept of matrix parameters
> (such
> > as ;jsessionid=xxx but appearing in any segment).  The standard URI class
> > in the JDK doesn't appear to provide much in the way of solutions either.
> >
> > Given that when encoding and decoding URLs/URIs, I can first split into
> > segments (easy enough splitting on "/"), does anyone on this HTTP client
> > list have any recommendations for correctly encoding and decoding each
> > individual path segment (and extracting matrix parameters)?  After
> > searching, I've found no standalone class (read: without being bloated or
> > loaded with dependencies) that can both encode and decode.  Given how
> many
> > implementors seem to have got it more or less wrong, I'm humble enough
> not
> > to try it myself unless there really is no other choice.
>
> The java.net.URI class is worth a careful review.
>
> It has constructors that encode parameters and a constructor that
> decodes its parameter.
>
> > Thanks,
> > Christopher
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: httpclient-users-unsubscr...@hc.apache.org
> For additional commands, e-mail: httpclient-users-h...@hc.apache.org
>
>

Reply via email to