The programming model for the outbound HTTP connection service | HCL Digital Experience

The outbound HTTP connection service can be used from the context of a servlet request service or from the context of a portlet request service. Here are some code examples.

The following example shows how to obtain the outbound HTTP connection service from the context of a portlet:
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.portlet.PortletRequest;
import javax.portlet.PortletResponse;
import com.ibm.portal.outbound.service.OutboundConnectionService;
import com.ibm.portal.outbound.service.OutboundConnectionServiceHome;
import com.ibm.portal.outbound.service.OutboundConnectionServiceException;

// obtain an Outbound HTTP connection service object (portlet context)

private OutboundConnectionService getService (PortletRequest p_request,
					      PortletResponse p_response) 
	throws  OutboundConnectionServiceException, NamingException
{

	Context ctx = new InitialContext();
	final OutboundConnectionServiceHome home = (OutboundConnectionServiceHome) 
           ctx.lookup(OutboundConnectionServiceHome.JNDI_NAME);
      final OutboundConnectionService service = 
        		home.getOutboundConnectionService(p_request, p_response); 
	return service;
}
In a different scenario, the code that calls the outbound HTTP connection service is part of a servlet. In this case, the method getOutboundConnectionService () receives the servlet request and servlet response variable. See the following example:
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.ibm.portal.outbound.service.OutboundConnectionService;
import com.ibm.portal.outbound.service.OutboundConnectionServiceHome;
import com.ibm.portal.outbound.service.OutboundConnectionServiceException;
…

// obtain an Outbound HTTP connection service object  (servlet context)
private OutboundConnectionService getService ( HttpServletRequest s_request,
					  HttpServletResponse s_response) 
	throws OutboundConnectionServiceException, NamingException
{

	Context ctx = new InitialContext();
	final OutboundConnectionServiceHome home = (OutboundConnectionServiceHome) 
           ctx.lookup(OutboundConnectionServiceHome.JNDI_NAME);
      final OutboundConnectionService service = 
        		home.getOutboundConnectionService(s_request, s_response); 
	return service;
}
Applications use the createConnection() method of the outbound HTTP connection service to open an outbound HTTP connection. The following code snippet connects to a URL resource through outbound HTTP connections and reads the content of the web page and writes it to a byte array output stream. See the following example:
import java.io.IOException;
import java.io.InputStream;
import java.io.ByteArrayOutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import com.ibm.portal.outbound.service.OutboundConnectionService;

...
/**
 * usage sample for GET requests using Outbound HTTP Connections
 * @param service the outbound HTTP connection service
 * @param theURL the remote URL
 * @param bos An object that receives the content of the GET request.
 * @return the HTTP status
 **/
private int doGet (OutboundConnectionService service, 
                   URL theURL,
                   ByteArrayOutputStream bos) 
    throws OutboundConnectionServiceException, IOException
{
    // obtain a connection object 
    HttpURLConnection connection = createConnection(theURL);
    try {
       // Submit the URL connection to the remote host.
       connection.connect();

       // read the returned content:
       InputStream is = (InputStream)connection.getContent();
       int byt = is.read();
       while (byt >= 0) {
          bos.write(byt);
          byt = is.read();
       }   
	 int status = connection.getStatus(); 
       return status;
    } finally {
       connection.disconnect();
       bos.close();
    }
}
The following code snippet connects to a URL resource through outbound HTTP connections and submits a POST request:
import java.io.IOException;
import java.io.InputStream;
import java.io.ByteArrayOutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import com.ibm.portal.outbound.service.OutboundConnectionService;

...
/**
 * usage sample for POST requests using Outbound HTTP Connections
 * @param service the outbound HTTP connection service
 * @param theURL the remote URL
 * @param postData the POST data.
 * @param bos An object that receives the content of the GET request.
 * @return the HTTP status
 **/
private int doPost (OutboundConnectionService service, 
                    URL theURL,
                    byte[] postData,
                    ByteArrayOutputStream bos) 
    throws OutboundConnectionServiceException, IOException
{
    // obtain a connection object 
    HttpURLConnection connection = createConnection(theURL);
    try {
       // write the POST data
       OutputStream os = connection.getOutputStream();
       os.write(postData, 0, postData.length);
       os.close();

       // Submit the URL connection to the remote host.
       connection.connect();	 

       // read the returned content:
       InputStream is = (InputStream)connection.getContent();
       int byt = is.read();
       while (byt >= 0) {
          bos.write(byt);
          byt = is.read();
       }   
	 int status = connection.getStatus(); 
       return status;
    } finally {
       connection.disconnect();
       bos.close();
    }
}
The following code snippet obtains an outbound connection service and requests the content of the URL www.ibm.com:
ByteArrayOutputStrream bos = new ByteArrayOutputStream();

OutboundConnectionService ocs = getService (request, response);
int status = doGet(ocs, new URL("http.//www.ibm.com"), bos);
if (status >= 400) {
    System.err.println("Remote connection failed with HTTP status "+status);
} else {
    byte[] da = bos.toByteArray();
    String first = da.length > 10 ? new String(da,0,da.length) : new String(da);
    System.out.println("The content starts with "+first);
}