1

我正在尝试连接本地主机并通过 j2me 应用程序将数据插入数据库。但是当我连接服务器时,它显示有一个 nullpointerexception 0 错误。

这是中间代码

import java.io.DataOutputStream;
import java.io.InputStream;
import javax.microedition.io.HttpConnection;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.StringItem;
import javax.microedition.midlet.*;


public class Midlet_1 extends MIDlet implements CommandListener {

Display mdDisplay;
Form mForm;
StringItem messageitem;
Command exit, connectCommand;

public Midlet_1() {

    mForm = new Form("My Counter midlet");
    messageitem = new StringItem(null, "");
    exit = new Command("Exit", Command.EXIT, 0);
    connectCommand = new Command("Connect", Command.SCREEN, 0);
    mForm.append(messageitem);
    mForm.addCommand(exit);
    mForm.addCommand(connectCommand);
    mForm.setCommandListener(this);

}

public void startApp() {

    mdDisplay = Display.getDisplay(this);
    mdDisplay.setCurrent(mForm);

}

public void pauseApp() {
}

public void destroyApp(boolean unconditional) {
}

public void commandAction(Command c, Displayable d) {
    if (c == exit) {
        notifyDestroyed();
    } else if (c == connectCommand) {
        Form waitform = new Form("Waiting");
        mdDisplay.setCurrent(waitform);
        Thread t = new Thread() {

            public void run() {
                connect();
            }
        };
        t.start();
    }
}

private void connect() {
    try {
        HttpConnection hs = null;
        InputStream in = null;
        String url = "localhost:8080/testweb/src/save";

        hs.setRequestProperty("User-Agent", "Profile/MIDP-2.0,Configuration/CLDC-2.0");
        hs.setRequestProperty("Content-Language", "en-US");
        hs.setRequestMethod(HttpConnection.POST);
        DataOutputStream ds = hs.openDataOutputStream();
        ds.writeUTF("nam56");
        ds.writeUTF("67");
        ds.writeUTF("0716522549");
        ds.flush();
        ds.close();


        in = hs.openInputStream();
        int connectlength = (int) hs.getLength();
        byte[] raw = new byte[connectlength];
        int length = in.read(raw);
//            int ch;
//            StringBuffer sb=new StringBuffer();
//            while((ch=in.read())!=-1){
//            sb.append((char)ch);
//            }
        in.close();
        hs.close();
        String s = new String(raw, 0, length);
        messageitem.setText(s);
    } catch (Exception e) {
        messageitem.setText(e.toString());
        System.out.println(e);
    }
    mdDisplay.setCurrent(mForm);
    }
}

这是servlet代码

 protected void processRequest(HttpServletRequest request, HttpServletResponse       response)
        throws ServletException, IOException, ClassNotFoundException, SQLException {
    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();
    try {
        DataInputStream in=new DataInputStream(request.getInputStream());
        String name=in.readUTF();
        String id=in.readUTF();
        String contt=in.readUTF();

        Connection c=DBcon.setconConnection();
        Statement s=c.createStatement();
        s.executeUpdate("insert into details values('"+id+"','"+name+"''"+contt+"')");
        out.print("successfullllll");


    } finally {            
        out.close();

    }
}

请检查一下......

4

2 回答 2

1

在您的 connect() 方法中,我可以看到您将 hs 初始化为 null,然后您调用了 setRequestProperty。尝试在调用其方法之前正确初始化 hs。

于 2012-10-15T09:25:21.650 回答
1

仅当您在与服务器相同的机器上运行模拟器时,这可能才有效。尝试替换locahost127.0.0.1.

于 2012-10-01T16:51:29.793 回答