每次我的移动应用程序需要访问数据库时,我都必须编写这段代码。
//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服务方法处理响应之前完成。因此,我无法简化这部分代码。关于如何进行的任何想法?
答案 0 :(得分:0)
将代码封装在
中 /** Process the string response **/
到Callable
,然后您可以创建一个调用
callable.call()
答案 1 :(得分:0)
您可以使用addToQueueAndWait(request)
阻止直到网络操作完成,并且在EDT上使用{{1}}是完全安全的。
您还可以使用invoke and block之类的东西来封装方法调用中的Web调用。