大家。我是新来的,这是我的第一篇文章。 我正在创建一个简单的应用程序,它可以获取Web的内容。下面是我的代码。问题是,我无法在模拟器上运行它。没有错误,没有对话框,只是完全无法打开。如果有人可以帮助我......
import java.io.InputStream;
import javax.microedition.io.Connector;
import javax.microedition.io.StreamConnection;
import net.rim.device.api.ui.UiApplication;
import net.rim.device.api.ui.component.LabelField;
import net.rim.device.api.ui.container.MainScreen;
public class HTTPClient extends UiApplication {
LabelField test;
MainScreen screen = new MainScreen();
public static void main(String[] args)
{
HTTPClient theApp = new HTTPClient();
theApp.enterEventDispatcher();
}
public HTTPClient()
{
getPage("http://google.com");
}
public void getPage(String url) {
String response = "";
try {
StreamConnection s = (StreamConnection)Connector.open(url);
InputStream input = s.openInputStream();
byte[] data = new byte[256];
int len = 0;
StringBuffer raw = new StringBuffer();
while( -1 != (len = input.read(data))) {
raw.append(new String(data, 0, len));
}
response = raw.toString();
show(response);
input.close();
s.close();
} catch(Exception e) { }
}
public void show(String response) {
test = new LabelField(response);
screen.add(test);
pushScreen(screen);
}
}
答案 0 :(得分:1)
关于您发布的代码的两个注释:
UIApplication
的情况下的UI线程)。Application
的{{1}}或invokeLater()
方法。或者,工作线程可以在事件锁定上同步(由invokeAndWait()
返回)以确保对UI的序列化访问。请注意,您应该只在短时间内保持此锁定。BlackBerry模拟器和HTTP - 为了测试与BlackBerry模拟器使用HTTP连接的BlackBerry应用程序,必须使用BlackBerry MDS(移动数据系统)连接服务。 Here是指向相关指南的链接。
启动BlackBerry Smartphone Simulator时启动BlackBerry MDS Connection Service
- 在Eclipse®的“运行”菜单上,单击“调试配置”或“运行配置”。
- 展开BlackBerry Simulator项目。
- 完成以下任务之一:
- 要使用现有的启动配置,请在BlackBerry Simulator下单击启动配置。
- 要创建新的启动配置,请右键单击BlackBerry Simulator,然后选择新建。
- 单击“模拟器”选项卡。
- 单击“常规”选项卡。
- 选中使用模拟器启动移动数据系统连接服务(MDS-CS)复选框。
- 点击“应用”。
醇>
我还强烈建议您检查已下载的JRE附带的HTTPDemo示例(如果能够编译代码,则至少安装了一个JRE)。 Here是如何将这些示例导入Eclipse插件的指南。
至于你的代码,我修改了它以满足我提到的要求:
Application.getEventLock()
答案 1 :(得分:0)
您好,只需添加网络扩展程序,即可获得回复
假设您要在设计中运行应用程序,可以将网络扩展名添加为";deviceside=true"
表示在您的代码中更改
StreamConnection s = (StreamConnection)Connector.open(url+;deviceside=true);
然后你可以看到回复
有关更多网络扩展的概念,请验证以下链接
答案 2 :(得分:0)
如果图标在那里,可能是应用程序的.cod已部署在模拟器中。我会更改您的应用程序以在窗口中显示静态标签;那会让你知道应用程序实际上正在运行。
一般来说,BB的模拟器中的网络可能很麻烦。我倾向于自己避免它。您可能必须运行'MDS模拟器'。