2014-11-15 1 views
0

저지를 사용하여 만든 웹 서비스를 호출하려고합니다. 서비스를 콘솔 Java 응용 프로그램에서 호출하여 서비스를 테스트했으며 완벽하게 작동합니다. 안드로이드에서 호출 할 때Android에서 저지 서비스 호출, 알 수 없음 예외

, 그것은 처음에는 검색, 나에게 android.os.NetworkOnMainThreadException를주고, 내가 AsyncTask를 그를 해결하기 위해 사용해야

다음 코드 충돌

때 "response.getEntity을 발견 (String.class) "는 get 서비스를 호출하는 동안 라고 불리며, getEntity 대신 status (response.getStatus())를 반환하면 정상적으로 작동합니다. 그러나 게시물 요청의 경우에는 똑같은 작업이 이루어지지 않습니다.

public class Service extends AsyncTask<String, Void, String>{ 

과 같이 호출됩니다 :

try { 
     alert(new Service().execute("lol").get(),view); 
    } catch (InterruptedException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (ExecutionException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

경고 방법은 바로 경고를 표시 getEntity()는 코드 위의 코드는 클래스의 일부입니다 모두

public String postTest(String arg){ 
     Log.d("Service", "postRegister1"); 
     client = Client.create(); 
     WebResource service=client.resource(getBaseURI()); 
     Log.d("Service", "postRegister2"); 

     Form form = new Form(); 
     form.add("arg", "lol"); 

     int status; 
     ClientResponse response=null; 
     try{ 
      response = service.path("test").get(ClientResponse.class); 
      //post 
      // response = service.path("post").path("test").post(ClientResponse.class,from); 

      Log.d("Service", "postRegister3"); 
      status = response.getStatus(); 

      //comment out the following if statement and the code will work perfectly fine, returning the stats 
      if(status == 200){ 
       return response.getEntity(String.class); 
      } 
      return String.valueOf(response.getStatus()); 
     } 
     catch(ClientHandlerException e){ 
      Log.d("Exception1",e.getMessage()+ " "); 
     } 
     catch(UniformInterfaceException e){ 
      Log.d("Exception2",e.getMessage()+ " "); 
     } 
     catch(Exception e){ 
      Log.d("Exception3",e.getMessage()+ " "); 
     } 

     return "exception"; 

    } 
    @Override 
    protected String doInBackground(String... params) { 
     // TODO Auto-generated method stub 
     Log.d("doInback", params[0]); 

     return postTest(params[0]); 
    } 

에 충돌합니다.

답변

0

Async Http client을 구현하기위한 라이브러리를 사용하여 해결했습니다.

내가 수행 한 튜토리얼은 here입니다.