I am trying to make an Android/ Java application that needs to connect to a Java EE web service that I will make. I need it to pass in a String, call an action, and scan through a dtabase based on that string, and return a different string back to the java/ android application.
I have it so far being able to send a String to a jsp page and it returning the string. I just need to know how to route the string into an action so I can perform DB queries and such in my web application. Below is what I have so far.
JSP
java.util.Enumeration e = request.getParameterNames();
while (e.hasMoreElements())
{
String pName = (String)e.nextElement();
String pValue = request.getParameter(pName);
String theURL = "index.do"+ "?Parameter1=" + pValue;
//theURL = response.encodeRedirectURL(theURL);
//response.sendRedirect(theURL);
%>
Value :<%=theURL%><%
break;
}
Java Class
import java.net.;
import java.util.;
import java.io.*;
/**
* An Example of the POST method in HTTP.
*/
public class Main
{
public static void main (String[] args) throws Exception
{
// Populate the hashtable with key value pairs of
// the parameter name and
// value. In this case, we only have the parameter
// named "CONTENT" and the
// value of CONTENT will be "HELLO JSP !"
Hashtable h = new Hashtable();
h.put("CONTENT", "I like stuff");
h.put("ONEMORECONTENT", "HELLO POST !");
// POST it !
String output = POST("xxxxxxxxxxx.jsp",
h);
System.out.println(output);
}
/**
* The POST method. Accepts 2 parameters
* @param targetURL : The URL to POST to.
* @param contentHash : The hashtable of the paramters to be posted.
*
* @return The String returned as a result of POSTing.
*/
public static String POST(String targetURL, Hashtable contentHash) throws Exception
{
URL url;
URLConnection conn;
// The data streams used to read from and write to the URL connection.
DataOutputStream out;
DataInputStream in;
// String returned as the result of the POST.
String returnString = "";
// Create the URL object and make a connection to it.
url = new URL (targetURL);
conn = url.openConnection();
// Set connection parameters. We need to perform input and output,
// so set both as true.
conn.setDoInput (true);
conn.setDoOutput (true);
// Disable use of caches.
conn.setUseCaches (false);
// Set the content type we are POSTing. We impersonate it as
// encoded form data
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
// get the output stream to POST to.
out = new DataOutputStream (conn.getOutputStream ());
String content = "";
// Create a single String value to be POSTED from the parameters passed
// to us. This is done by making "name"="value" pairs for all the keys
// in the Hashtable passed to us.
Enumeration e = contentHash.keys();
boolean first = true;
while(e.hasMoreElements())
{
// For each key and value pair in the hashtable
Object key = e.nextElement();
Object value = contentHash.get(key);
// If this is not the first key-value pair in the hashtable,
// concantenate an "&" sign to the constructed String
if(!first)
content += "&";
// append to a single string. Encode the value portion
content += (String)key + "=" + URLEncoder.encode((String)value);
first = false;
}
// Write out the bytes of the content string to the stream.
out.writeBytes (content);
out.flush ();
out.close ();
// Read input from the input stream.
in = new DataInputStream (conn.getInputStream ());
String str;
while (null != ((str = in.readLine())))
{
returnString += str + "\n";
}
in.close ();
// return the string that was read.
return returnString;
}
}
OutPut:
Value :index.do?Parameter1=I like stuff
Thanks in advance!
The simplest way tp solve your problem is to implement a HttpServlet. You can use the client from your example.
You have to implement doPost(request , response) method.
You can simply access parameters by calling
Other way to do the staff is using standard web services. I dont know Android programming but this link seems to show a good example: http://www.ibm.com/developerworks/webservices/library/ws-android/index.html?ca=drs-