How to do REST invocation with Axis2/Java ServiceClient?

Archived Content
This article is provided for historical perspective only, and may not reflect current conditions. Please refer to relevant product page for more up-to-date product information and resources.
  • By Eran Chinthaka
  • 17 Jun, 2006

The difference between doing a SOAP invocation and a REST invocation depends on just one line (with default configuration). Just insert the following line of code:

 options.setProperty(Constants.Configuration.ENABLE_REST, Constants.VALUE_TRUE);

Let's see the complete code snippet.

Options options = new Options();
options.setTo(new EndpointReference(toEpr));

options.setProperty(Constants.Configuration.ENABLE_REST, Constants.VALUE_TRUE);

ServiceClient sender = new ServiceClient();
sender.setOptions(options);
OMElement result = sender.sendReceive(getPayload());

If you are invoking a Web service in RESTful manner, make sure the toEpr you give has all the information required to identify the operation and the service that you are invoking. The above code will invoke a resource using HTTP PUT method. To change it to use GET method simply set another option as shown below.

 
options.setProperty(Constants.Configuration.HTTP_METHOD,
Constants.Configuration.HTTP_METHOD_GET);

Can I change the content type of the request? Yes, you can.

 
options.setProperty(Constants.Configuration.CONTENT_TYPE, contentType);

The content type should be one of the following:

  1. MEDIA_TYPE_X_WWW_FORM - application/x-www-form-urlencoded
  2. MEDIA_TYPE_TEXT_XML - text/xml
  3. MEDIA_TYPE_MULTIPART_RELATED - multipart/related
  4. MEDIA_TYPE_APPLICATION_XML - application/xml