2015-01-08 1 views
0

내 모바일 앱이 DB에 액세스해야 할 때마다이 코드를 작성해야합니다.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); 

웹 앱이 DB에 지속적으로 액세스 할 때마다 그리고 동일한 코드를 복사, 붙여 넣기 및 수정해야하는 모든 호출에 대해 지루해집니다. 메서드를 생성하고 문자열 응답을 반환하려고 시도했지만 웹 서비스가 비동기 적으로 완료 되었기 때문에 웹 서비스를 호출하는 메서드는 웹 서비스 메서드가 응답을 처리하기 전에 끝내야합니다. 따라서이 부분을 단순화 할 수 없습니다. 진행 방법에 대한 아이디어가 있습니까?

답변

0

Callable

/** Process the string response **/

의 코드를 캡슐화, 당신은 네트워크 작업이 완료 될 때까지

callable.call()

0

당신은 addToQueueAndWait(request)있는 블록을 사용하여 호출하는 일반적인 방법을 만들 수 있습니다 invoke and block을 사용하므로 EDT에서 사용하기에 안전합니다.

또한 메서드 호출에서 웹 호출을 캡슐화하는 webservice wizard과 같은 것을 사용할 수도 있습니다.

+0

감사합니다. 필자는 웹 서비스 마법사를 사용하여 코드를보다 강력하고 유용하게 사용했습니다. – DDs

+0

show 대화 상자 메소드를 호출 한 다음 해당 대화 상자를 삭제해야합니다. –

관련 문제