一个手机与Servlet通信问题!!!

giftedjacky 2004-10-20 04:47:52
String url="http://localhost:8000/advjhtp1/servletApp";
HttpConnection hc=(HttpConnection) Connector.open(url, Connector.READ_WRITE);
程序到此就不执行了,try{}也不抛出异常!
我用的是J2ME Wireless Toolkit
控制台:
Warning: To avoid potential deadlock, operations that may block, such as
networking, should be performed in a different thread than the
commandAction() handler.
各位高手帮忙啊!!!
...全文
83 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
giftedjacky 2004-10-20
  • 打赏
  • 举报
回复

import java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class ServletApp extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
response.setContentType("text/html; charset=GBK");
//设置响应属性
//接收客户端的请求
InputStream is = request.getInputStream();
DataInputStream dis = new DataInputStream(is);
String tf1Str = dis.readUTF();
String tf2Str = dis.readUTF();
System.out.println("servlet端接收到手机传来的第一个参数为:" + tf1Str);
// 主要起调试的作用,调试的结果显示在tomcat的启动DOS窗口中
System.out.println("servlet端接收到手机传来的第二个参数为:" + tf2Str);
//对接收的参数进行处理
String return1Str = tf1Str.concat(":早上好!");
//在接收到的参数后连接字符串
String return2Str = tf2Str.concat(":晚上好!");
//发送处理后的参数给手机
DataOutputStream dos = new DataOutputStream(response.getOutputStream());
dos.writeUTF(return1Str);
dos.writeUTF(return2Str);
System.out.println("servlet传递给手机的第一个参数为:" + return1Str);
System.out.println("servlet传递给手机的第二个参数为:" + return2Str);
}

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}

public void destroy() {
}
//清除资源
}
giftedjacky 2004-10-20
  • 打赏
  • 举报
回复
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.io.*;
import java.io.*;

public class ClientApp extends MIDlet implements CommandListener {
Display display;

TextField tf1, tf2;

String tf1Str, tf2Str;

Form inputForm, returnForm;

Command cmdSend, cmdBack;

final static String defaultURL = "http://localhost:8000/advjhtp1/servletApp";

public ClientApp() {
display = Display.getDisplay(this);
tf1 = new TextField("input first param:", "卢东方", 20, TextField.ANY);
tf2 = new TextField("input second param:", "王桃群", 20, TextField.ANY);
cmdSend = new Command("Send", Command.SCREEN, 1);
cmdBack = new Command("Back", Command.BACK, 1);
inputForm = new Form("pls input the param:");
inputForm.append(tf1);
inputForm.append(tf2);
inputForm.addCommand(cmdSend);
inputForm.addCommand(cmdBack);
inputForm.setCommandListener(this);
}

public void startApp() throws MIDletStateChangeException {
System.out.println("---------->>>begin");
display.setCurrent(inputForm);

}

public void invokeServlet(String url) throws IOException {
HttpConnection hc = null;
DataOutputStream dos = null;
DataInputStream dis = null;
try {
System.out.println("---------->>>1...");
hc = (HttpConnection) Connector.open(url, Connector.READ_WRITE);
//设置请求属性
System.out.println("---------->>>1.2...");
hc.setRequestMethod(HttpConnection.POST);
//设置为POST请求方式,默认的请求方式是GET
System.out.println("---------->>>2...");
hc.setRequestProperty("IF-Modified-Since",
"15 Oct 2003 08:47:14 GMT");
hc.setRequestProperty("User-Agent",
"Profile/MIDP-1.0 Configuration/CLDC-1.0");
hc.setRequestProperty("Content-Language", "en-CA");
hc.setRequestProperty("Content-Type",
"application/x-www-form-urlencoded");
hc.setRequestProperty("Connection", "Keep-Alive");
//Connection头可以控制MIDlet和Web服务器之间保持"keep alive"特色。
/*
* "keep alive"特色是指在MIDlet和Web服务器间始终使用同一个HTTP连接来多次传递数据
* (在通常情况下,HTTP是无连接的协议,每次数据传输完毕后都将断开连接, 而下次传递数据之前将重新建立连接)
*/
//发送请求参数到servlet
dos = hc.openDataOutputStream();
System.out.println("---------->>>3...");
dos.writeUTF(tf1Str);
dos.writeUTF(tf2Str);
System.out.println("---------->>>4...");
//用于发送请求参数给servlet
System.out.println("手机传递给servlet的第一个参数为:" + tf1Str);
//主要起调试的作用,调试的结果将显示在WTK的控制台中
System.out.println("手机传递给servlet的第一个参数为:" + tf2Str);
dos.flush();
dos.close();
//接收servlet响应数据
dis = new DataInputStream(hc.openInputStream());
String return1Str = dis.readUTF();
String return2Str = dis.readUTF();
System.out.println("手机接收到servlet端传来的第一个参数为:" + return1Str);
//主要起调试的作用,调试的结果将显示在WTK的控制台中
System.out.println("手机接收到servlet端传来的第二个参数为:" + return2Str);
returnForm = new Form("返回的结果");
returnForm.append(return1Str);
returnForm.append("\n");
//将返回的结果append到resultForm中
returnForm.append(return2Str);
returnForm.addCommand(cmdBack);
returnForm.setCommandListener(this);
}catch(Exception e){
e.printStackTrace();
} finally {
if (dis != null) {
dis.close();
}
if (dos != null) {
dos.close();
}
if (hc != null) {
hc.close();
}
}
display.setCurrent(returnForm);
}

public void pauseApp() {
}

public void destroyApp(boolean unconditional) {
}

public void commandAction(Command c, Displayable d) {
if (c == cmdBack) {
display.setCurrent(inputForm);
}
if (c == cmdSend) {
System.out.println("---------->>>commandAction...");
tf1Str = tf1.getString();
tf2Str = tf2.getString();
try {
System.out.println("---------->>>commandAction...url..."+defaultURL);
invokeServlet(defaultURL);
System.out.println("---------->>>end...");
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
}
1.项目代码功能经验证ok,确保稳定可靠运行。欢迎下载使用! 2.主要针对各个计算机相关专业,包括计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网等领域的在校学生、专业教师或企业员工使用。 3.项目具有丰富的拓展空间,不仅可作为入门进阶,也可直接作为毕设、课程设计、大作业、初期项目立项演示等用途。 4.当然也鼓励大家基于此进行二次开发。在使用过程中,如有问题或建议,请及时私信沟通。 5.期待你能在项目中找到乐趣和灵感,也欢迎你的分享和反馈! 【资源说明】 基于servlet+MySQL实现安卓手机通讯录自动备份系统源码+sql数据库+论文报告(课程设计).zip基于servlet+MySQL实现安卓手机通讯录自动备份系统源码+sql数据库+论文报告(课程设计).zip基于servlet+MySQL实现安卓手机通讯录自动备份系统源码+sql数据库+论文报告(课程设计).zip基于servlet+MySQL实现安卓手机通讯录自动备份系统源码+sql数据库+论文报告(课程设计).zip基于servlet+MySQL实现安卓手机通讯录自动备份系统源码+sql数据库+论文报告(课程设计).zip基于servlet+MySQL实现安卓手机通讯录自动备份系统源码+sql数据库+论文报告(课程设计).zip基于servlet+MySQL实现安卓手机通讯录自动备份系统源码+sql数据库+论文报告(课程设计).zip基于servlet+MySQL实现安卓手机通讯录自动备份系统源码+sql数据库+论文报告(课程设计).zip基于servlet+MySQL实现安卓手机通讯录自动备份系统源码+sql数据库+论文报告(课程设计).zip 基于servlet+MySQL实现安卓手机通讯录自动备份系统源码+sql数据库+论文报告(课程设计).zip

790

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 其他移动相关
社区管理员
  • 移动开发其他问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧