hi

i'm trying to connect a midlet running on my emulator (jwtk 2.5.2) to an apache tomcat server which has the servlet code. when i run the emulator instead of displaying the name i posted in the midlet code after connecting to the server, the screen displays the servlet code. I'm new at j2me so i'm not sure what i'm doing wrong.

MIDLET CODE:

import java.io.*;
import javax.microedition.io.*;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;

public class PostMIDlet extends MIDlet implements CommandListener, Runnable
{
private Display mDisplay;
private Form mForm;

public PostMIDlet()
{
mForm = new Form("Connecting ....");
mForm.addCommand(new Command("Exit", Command.EXIT, 0));
mForm.setCommandListener(this);
}

public void startApp()
{
if (mDisplay == null) mDisplay = Display.getDisplay(this);
mDisplay.setCurrent(mForm);
Thread t = new Thread(this);
t.start();
}

public void pauseApp() {}

public void destroyApp(boolean unconditional) {}

public void commandAction(Command c, Displayable s)
{
if (c.getCommandType() == Command.EXIT) 
notifyDestroyed();
}

public void run()
{
HttpConnection hc = null;
InputStream in = null;
OutputStream out = null;

try
{
String message = "Daniel+Agaba%21";
String url = "http://localhost:8080/test/PostServlet.java";
hc = (HttpConnection)Connector.open(url);
hc.setRequestMethod(HttpConnection.POST);
hc.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
hc.setRequestProperty("Content-Length", Integer.toString(message.length()));
out = hc.openOutputStream();
out.write(message.getBytes());
in = hc.openInputStream();
int length = (int)hc.getLength();
byte[] data = new byte[length];
in.read(data);
String response = new String(data);
StringItem stringItem = new StringItem(null, response);
mForm.append(stringItem);
mForm.setTitle("Done");
}
catch (IOException ioe)
{
StringItem stringItem = new StringItem(null, ioe.toString());
mForm.append(stringItem);
mForm.setTitle("Done");
}
finally
{
try{
if (out != null) out.close();
if (in != null) in.close();
if (hc != null) hc.close();
}
catch (IOException ioe) {}
}
}
}


SERVLET CODE:

import javax.servlet.http.*;
import javax.servlet.*;
import java.io.*;
public class PostServlet extends HttpServlet {
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
String name = request.getParameter("name");
String message = "Received name: '" + name + "'";
response.setContentType("text/plain");
response.setContentLength(message.length());
PrintWriter out = response.getWriter();
out.println(message);
}
}

Recommended Answers

All 6 Replies

Hi,
in middlet code line 45 write like this url = "http://localhost:8080/test/PostServlet"
otherwise
in the place of PostServlet write your own urlpattern which you had written in web.xml. this is a problem .be carefully while writing url string

i am using the same code but getting http 404 error don't know the problem

Because you cannot connect to localhost, do it in proper server

i am using a ip address 192.168.1.101:8080 still getting
Uncaught exception java/lang/NegativeArraySizeException.

can u tell me the exact url we have write on client side while server is on netbeans test file

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.