When dealing with REST webservices, the HTTP GET request is commonly used (very often with params). Apache’s DefaultHttpClient has convenient methods that utilize making such requests. This is how I do it:
Request data
the URL that I am going to execute is:
http://www.example.org:8001/rest/sendMessage
GET request params are as follows:
- body: message body (content)
- from: sender’s name
- to: recipient’s name
so the URL with params attached will look like this:
http://www.example.org:8001/rest/sendMessage?body=hello&from=jack&to=bill
Prerequisities
If your JRE is not equipped with Apache DefaultHttpClient, then you need to download two jars (I recommend to use version no older than 4.2.1):
- httpclient-4.2.1.jar
- httpcore-4.2.1.jar
1. Create URL
You can do it in two ways: hardcoded or objective.
Hardcoded version is simply creating String variable like this:
String url = "http://www.example.org:8001/rest/sendMessage?body=hello&from=jack&to=bill";
It is not convenient, because You have to converts this String to URI object, and encode it. The url above does not need encoding, but it would, if for example message content would contain spaces (The space is encoded to %20). So if body would be:
hello world
then the param would be encoded to:
body=hello%20world
More about ecoding you will find on wiki page here.
Objective version requires httpclient in version 4.2.1 or higher. That release has URIBuilder:
URIBuilder builder = new URIBuilder();
builder.setScheme("http").setHost("www.example.org").setPort(8001).setPath("/rest/sendMessage")
.setParameter("msg", "hello")
.setParameter("from", "jack")
.setParameter("to", "bill");
URI url = builder.build();
the build method is encoding the url automatically, so the result uri is ready to execute. In other words you can write:
.setParameter("msg", "hello world")
without taking care about encoding – the builder will do it for you. If you do not need params, then you simply omit the setParameter() methods.
2. Create HttpGet instance
HttpGet request object is created with url:
HttpGet httpget = new HttpGet(url);
3. Create Http Client
The DefaultHttpClient is powerful enough in most cases. The client is responsible for executing requests:
DefaultHttpClient httpClient = new DefaultHttpClient();
4. Provide BasicAuthentication credentials (Optional)
If your REST API is protected with BasicAuthentication you can add an Authentication Header to your HttpClient:
Credentials credentials = new UsernamePasswordCredentials("username", "password");
httpClient.getCredentialsProvider().setCredentials(newAuthScope("www.example.org",8001),
credentials);
5. Execute GET request
Now it’s time to execute request on client and retrieve the response:
HttpResponse response = httpClient.execute(httpget);
6. Handle all exceptions
There are several exceptions thrown by methods above. Your IDE will enforce you to handle them. Please see my implementation in snippet below.
7. See my complete source code :)
If you have problems building it up all together, here is my full implementation:
import org.apache.http.HttpResponse;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.Credentials;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.impl.client.DefaultHttpClient;
public void sendTestMessage() {
try{
// build URL
URIBuilder builder =newURIBuilder();
builder.setScheme("http").setHost("www.example.org").setPort(8001).setPath("/rest/sendMessage").setParameter("msg","hello").setParameter("from","jack").setParameter("to","bill");
URI url = builder.build();
HttpGet httpget =newHttpGet(url);// Execute HTTP Get Request
DefaultHttpClient httpClient =new DefaultHttpClient();
Credentials credentials =new UsernamePasswordCredentials("username", "password");
httpClient.getCredentialsProvider().setCredentials(newAuthScope("www.example.org",8001),
credentials);
HttpResponse response = httpClient.execute(httpget);
}catch(ClientProtocolException e) {
e.printStackTrace();
}catch(IOException e) {
e.printStackTrace();
}catch(URISyntaxException e) {
e.printStackTrace();
}
}
Did I help you?
I manage this blog and share my knowledge for free sacrificing my time. If you appreciate it and find this information helpful, please consider making a donation in order to keep this page alive and improve quality

Thank You!
Like this:
Like Loading...