1

我正在创建我的第一个尝试连接到 REST Web 服务的黑莓应用程序。我尝试了在互联网上找到的示例。请参考此链接:http: //mobile-development.org/index.php/blackberry/how-to-call-restful-web-services-in-blackberry

我尝试在我的简单 BlackBerry 应用程序中实现它,这是在 BlackBerry Plug-in for Eclipse IDE 中创建新 BlackBerry 项目时自动创建的应用程序。我只是将代码(字面意思是复制并粘贴)放在我的按钮中,单击该按钮时将执行此类代码。但是,当我单击按钮时,应用程序挂起。

当我实现一个在输出日志中简单地输出“Hello”的代码时,应用程序工作得很好。背后的原因是什么?我需要在单独的线程中运行 Web 服务调用吗?请帮忙。先感谢您。

------------------请阅读以下内容----------

我注意到我的应用程序挂起,因为它等待来自 Web 服务调用的响应至少 2 分钟。我通读了这个:http ://www.blackberry.com/knowledgecenterpublic/livelink.exe/fetch/2000/348583/800451/800563/What_Is_-_Different_ways_to_make_an_HTTP_or_socket_connection.html?nodeid=826935&vernum=0-- 并在 url (http://yourwebserviceurl.com;deviceside=true") 的末尾添加了“deviceside=true”。它现在工作正常。也许正确的实现是在后台或在一个单独的线程并设置我还不知道的超时。我仍然对是否将设备端设置为真/假感到困惑。当我在运行我的应用程序时,我是否应该将设备端设置为真如果我希望模拟器在实际设备中运行,那么只需将其更改为 false?这是我现在发现的,或者你也可以帮助我解决这个问题。;-)

4

1 回答 1

1

他们给出的代码用于 HTTP 连接,完全没问题,但是我们需要在线程中调用此代码,因为 ui 也可以在线程中工作,它被卡住了。所以你需要在这里使用线程概念。查看提供的样品

Eclipse helios\plugins\<sdk version>\components\samples\com\rim\samples\device\httpdemo

每当您想在后台线程中更新 UI 时,请使用

UiApplication.getUiApplication().invokeLater(new Runnable() 
    {
        public void run()
        {
            <Update UI>
        }
    });

我希望它可以帮助你。

于 2012-08-29T05:23:30.167 回答