codenameone有一种更简单/更好的方式来调用Web服务吗?

时间:2015-01-08 15:11:25

标签: java web-services codenameone

每次我的移动应用程序需要访问数据库时,我都必须编写这段代码。

//NetworkManager.getInstance().start();
        ConnectionRequest request = new ConnectionRequest();
        request.setUrl(WebConstants.HOST+"URL");
        request.setPost(false);
        request.addArgument("x",y);
        request.addResponseListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                NetworkEvent event = (NetworkEvent)evt;
                Exception error = event.getError();
                if(error != null) {
                    return;
                }
                ConnectionRequest request = event.getConnectionRequest();
                byte[] result = request.getResponseData();

                String response = new String(result);

                /** Process the string response **/

            }
        });
        NetworkManager.getInstance().addToQueue(request);

当Web应用程序不断访问数据库以及我需要复制,粘贴和修改相同代码的每个调用时,这变得非常繁琐。我尝试创建一个方法并返回字符串响应,但由于Web服务是异步完成的,因此调用Web服务的方法必须在Web服务方法处理响应之前完成。因此,我无法简化这部分代码。关于如何进行的任何想法?

2 个答案:

答案 0 :(得分:0)

将代码封装在

/** Process the string response **/

Callable,然后您可以创建一个调用

的通用方法

callable.call()

答案 1 :(得分:0)

您可以使用addToQueueAndWait(request)阻止直到网络操作完成,并且在EDT上使用{{1}}是完全安全的。

您还可以使用invoke and block之类的东西来封装方法调用中的Web调用。