2012-10-01 104 views
1

我想連接本地主機,並通過j2me application.but插入數據到數據庫,但是當我連接服務器時,它顯示有一個nullpointerexception 0錯誤。J2ME連接本地主機nullpointerexception 0

這是MIDlet的代碼

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(); 

    } 
} 

請檢查了這一點.....

+1

你在模擬器或實際設備中嘗試? – Lucifer

+0

你做了什麼調試,拋出的異常在哪裏等等 – funkybro

回答

1

這可能只是工作,如果你正在運行的模擬器與服務器在同一臺機器上。嘗試用127.0.0.1代替locahost

1

在你的connect()方法中,我可以看到你初始化hs爲null,然後你調用了setRequestProperty。嘗試在調用其方法之前正確初始化hs。