SUM
SUM

Reputation: 1661

Encode URL parameters using Java

I want to encode part of URL paramter in JAVA

http://statebuild-dev.com/iit-title/size.xml?id=(102T OR 140T)

to

http://statebuild-dev.com/iit-title/size.xml?id=(102%20OR%20140)

have tried using URI to encode but it also encodes ? which I do not want. In the URL I want to encode the part after '='

URI uri = new URI("http", 
    "statebuild-dev.com/iit-title", "/size.xml?id=(102 OR 140)", null);
//URL url = uri.toURL();
System.out.println(uri.toString());
System.out.println(url1);

Thank You

Upvotes: 2

Views: 7069

Answers (4)

Giovanni Caporaletti
Giovanni Caporaletti

Reputation: 5556

You used the wrong constructor. Try this:

URI uri = new URI("http","statebuild-dev.com", "/iit-title/size.xml", "id=(102 OR 140)", null);

See also java.net.URLEncoder

Upvotes: 1

jtahlborn
jtahlborn

Reputation: 53694

you want to use URLEncoder to encode each query parameter before adding to the url, e.g.:

String encodedValue = URLEncoder.encode("(102 OR 140)", "UTF-8");

Upvotes: 3

Alex
Alex

Reputation: 13961

This answer has a good discussion of encoding the various parts of a URI/URL. You're on the right track, but your specific problem is that you have the various parts of the URI wrong. You need to use the multi-part constructor that takes an authority, path, query, and fragment:

URI uri = new URI("http", "statebuild-dev.com", "/iit-title/size.xml", "id=(102 or 104)", null);
System.out.println(uri.toString());
System.out.println(uri.toASCIIString());

Upvotes: 1

Tooraj Jam
Tooraj Jam

Reputation: 1622

The java.net.URI class can help; in the documentation of URL you find

Note, the URI class does perform escaping of its component fields in certain circumstances. The recommended way to manage the encoding and decoding of URLs is to use URI

Check this thread.

Upvotes: 0

Related Questions