J2ME访问Web服务器问题

guo2478858 guo2478858 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
本人初学者,呵呵,所以希望高手解答的时候最好附代码。
我现在遇到一个问题,我通过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() {

}
}
...全文

相关推荐

评论 6
收藏 已收藏
分享
返回顶部
guo2478858
J2ME 13,096 成员 26,491 内容