我创建了一个 midlet 应用程序,它可以从数据库中导入数据(在 PC 中用 oracle 实现)并将数据插入到同一个数据库中,因此该应用程序在模拟器(Netbeans IDE)中运行良好。
设备支持 MIDP 2.1 和 jsr 172:http ://www.mobilerated.com/nokia-5800-xpressmusic-specifications.html
我想要的是通过 wifi 连接将此应用程序与 PC 连接,但是当我尝试在手机(PDA 或诺基亚 C6 等智能手机)中实现此应用程序时,似乎 midlet 之间没有连接(在 hendler 终端中)和 servlet(在 PC 中),所以我无法捕捉到来自 PC 的任何响应。
这是我在 midlet 中使用的代码:
private void doInsertDataEtat() throws IOException
{
HttpConnection http = null;
InputStream iStrm = null;
url ="http://192.168.1.2:8080/TESTWEB/InsertDataEtat" +"?"+"loconum="+List_Num.getString(List_Num.getSelectedIndex()).substring(0, 4) +"&"+"datedevisite="+nbrdate+"&"+"heuredebut="+dateFieldAc.getDate().toString().substring(11,16)+"&"+"etat="+Etatfinal.getString(Etatfinal.getSelectedIndex()).replace(' ', '+') +"&"+"observationetat="+observationEtat.getString().replace(' ', '+') +"&"+"dureevisite="+dureevisite;
try
{
// Create the connection
http = (HttpConnection)Connector.open(url);
System.out.println("url: " + url);
// 2) Get header information
if (http.getResponseCode() == HttpConnection.HTTP_OK)
{
// afficher les données recus de la servlet par la methode get
System.out.println("INSERTION REUSSITE" );
}
}catch(Exception e){
e.printStackTrace();
Alert alert = new Alert("Erreur de Connexion", "Désolé , il y a une erreur au nivau de la connextion au serveur \n"+e.getMessage(), null, AlertType.ERROR);
alert.setTimeout(Alert.FOREVER);
display.setCurrent(alert);
}
finally{
// detruire les variable apres l'utilisation
if (iStrm != null)
iStrm.close();
if (http != null)
http.close();
}
}
我想知道我必须为该应用程序做哪些修改才能正常工作?
注意:根据站点成员的回答修改,用@ip更改url后出现同样的问题
我的电脑的@ip 是:192.168.1.2
,路由器的@ip 是:192.168.1.1
不幸的是,我不知道如何获取手机的@ip。
@WebServlet(name = "InsertDataEtat", urlPatterns = {"/InsertDataEtat"})
public class InsertDataEtat extends HttpServlet {
public String loconum,observationEtat,datevisite,heuredebut,etat,dureevisite;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/plain");
PrintWriter out = response.getWriter();
try
{
//parametre passer du midlet a la servlet par la methode GET
loconum = request.getParameter("loconum");
etat = request.getParameter("etat").replace('+', ' ');
datevisite = request.getParameter("datedevisite");
heuredebut = request.getParameter("heuredebut");
observationEtat = request.getParameter("observationetat").replace('+', ' ');
observationEtat = observationEtat.replace("'", "''");
dureevisite=request.getParameter("dureevisite");
String sql="INSERT INTO ETAT VALUES('"+loconum+"','"
+datevisite+"','"+observationEtat+"','"+etat+"','"+heuredebut+"','"+dureevisite+"')";
System.out.println(sql);
//----------------------------------------------------------
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con=DriverManager.getConnection
("jdbc:oracle:thin:@th-d3a2629a531d:1521:XE","ONCFDB","ONCFDB");
Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
stmt.executeUpdate(sql);
System.out.println("c'est fait avec succés");
}
catch(Exception e)
{
System.out.println("ça marche pas ");
}
out.close();
}
}