J2ME访问Web服务器问题
本人初学者,呵呵,所以希望高手解答的时候最好附代码。
我现在遇到一个问题,我通过HttpConnection hc = (HttpConnection)Connector.open(url);访问一个Web服务器地址,一定要用线程吗?我就这一个操作,所以不想用线程,具体代码该怎么写呢?
而且我现在用线程的话,对于在线程里取到的值想在线程之外的地方用,即使定义了一个全局变量也取不到,所以请给出相应代码。
我将我现在的代码简化下发下:
package moa;
import java.io.DataInputStream;
import javax.microedition.io.Connector;
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.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
public class MIDlet_Index extends MIDlet implements CommandListener{
private Display dis;
public String ReturnS = new String();
private Form frm = new Form("访问地址");
private Command cmdOK = new Command("确定",Command.SCREEN,1);
public MIDlet_Index() {
}
protected void startApp() throws MIDletStateChangeException {
dis = Display.getDisplay(this);
dis.setCurrent(frm);
frm.addCommand(cmdOK);
}
public void commandAction(Command c,Displayable d){
if(c==cmdOK){
ValidateThread vt = new ValidateThread();
vt.start();
System.out.print(ReturnS);//这里就无法打印出来ReturnS,怎么能获得值?
}
}
class ValidateThread extends Thread{
public void run(){
try{
String url = "http://192.168.255.56/MOA.nsf/Agent_MOA_Login";
HttpConnection hc = (HttpConnection)Connector.open(url);
DataInputStream dis = hc.openDataInputStream();
byte[] b = new byte[(int)hc.getLength()];
dis.read(b);
ReturnS = new String(b).trim();//这里是我获得的值,在上面想用
}catch(Exception ex){
ex.printStackTrace();
}
}
}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
}
protected void pauseApp() {
}
}
我现在遇到一个问题,我通过HttpConnection hc = (HttpConnection)Connector.open(url);访问一个Web服务器地址,一定要用线程吗?我就这一个操作,所以不想用线程,具体代码该怎么写呢?
而且我现在用线程的话,对于在线程里取到的值想在线程之外的地方用,即使定义了一个全局变量也取不到,所以请给出相应代码。
我将我现在的代码简化下发下:
package moa;
import java.io.DataInputStream;
import javax.microedition.io.Connector;
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.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
public class MIDlet_Index extends MIDlet implements CommandListener{
private Display dis;
public String ReturnS = new String();
private Form frm = new Form("访问地址");
private Command cmdOK = new Command("确定",Command.SCREEN,1);
public MIDlet_Index() {
}
protected void startApp() throws MIDletStateChangeException {
dis = Display.getDisplay(this);
dis.setCurrent(frm);
frm.addCommand(cmdOK);
}
public void commandAction(Command c,Displayable d){
if(c==cmdOK){
ValidateThread vt = new ValidateThread();
vt.start();
System.out.print(ReturnS);//这里就无法打印出来ReturnS,怎么能获得值?
}
}
class ValidateThread extends Thread{
public void run(){
try{
String url = "http://192.168.255.56/MOA.nsf/Agent_MOA_Login";
HttpConnection hc = (HttpConnection)Connector.open(url);
DataInputStream dis = hc.openDataInputStream();
byte[] b = new byte[(int)hc.getLength()];
dis.read(b);
ReturnS = new String(b).trim();//这里是我获得的值,在上面想用
}catch(Exception ex){
ex.printStackTrace();
}
}
}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
}
protected void pauseApp() {
}
}
...全文
相关推荐
J2me访问c# Web Services解决了中文乱码
在本文中,我们将探讨如何使用J2ME(Java 2 Micro Edition)访问由C#编写的Web服务,并解决在传输过程中可能出现的中文乱码问题。
J2me访问c# Web Services
在本文中,我们将深入探讨如何让J2ME应用程序访问由C#编写的Web服务,同时解决中文字符传输的问题。
j2me-ws.rar
在 J2ME 中,实现 Web 服务功能可以让移动设备与服务器进行数据交互,实现远程调用服务。1.
Ceres - Micro WebServer for J2ME-开源
**Ceres微型Web服务器**是专为J2ME(Java 2 Micro Edition)设计的一款开源软件,它在有限的资源环境下提供了基础的Web服务功能。
基于J2ME_J2EE的移动电子商务平台的研究与开发.pdf
Web服务器接收来自J2ME客户端的HTTPS或XMLRequest,通过Servlet容器处理这些请求,并调用企业级服务器上的EJBs(Enterprise JavaBeans)进行业务逻辑处理。


J2ME
