2014-02-07 1 views
-1

json webservice asynctask android를 사용하여 json 웹 서비스를 호출하는 방법을 알려주시겠습니까? 일부 비동기 작업 background.and 응답을 올 때 해당 팝업을 제거하십시오.어떻게 시스템에 인적 자원 관리를 만들 수 있습니까?

public static String getMethod(String url) { 
     HttpClient httpclient = new DefaultHttpClient(); 
     HttpResponse response; 
     String responseString = null; 
     try { 
      response = httpclient.execute(new HttpGet(url)); 
      StatusLine statusLine = response.getStatusLine(); 
      if (statusLine.getStatusCode() == HttpStatus.SC_OK) { 
       ByteArrayOutputStream out = new ByteArrayOutputStream(); 
       response.getEntity().writeTo(out); 
       out.close(); 
       responseString = out.toString(); 
      } else { 
       // Closes the connection. 
       response.getEntity().getContent().close(); 
       throw new IOException(statusLine.getReasonPhrase()); 
      } 
     } catch (ClientProtocolException e) { 
      // TODO Handle problems.. 
     } catch (IOException e) { 
      // TODO Handle problems.. 
     } 
     return responseString; 
    } 


WebServiceRequestManager wb=new WebServiceRequestManager(); 
     String ss= wb.getMethod("htoard?crsCode=add"); 
     System.out.println("String"+ss); 
+0

https://github.com/koush/ion과 같은 것을 사용해보고 싶을 수도 있습니다. –

답변

0

이 방법

을 DO 이것은 당신의 WebServiceRequestManager.java

public class WebServiceRequestManager { 

    public String getMethod(String url) { 
     HttpClient httpclient = new DefaultHttpClient(); 
     HttpResponse response; 
     String responseString = null; 
     try { 
      response = httpclient.execute(new HttpGet(url)); 
      StatusLine statusLine = response.getStatusLine(); 
      if (statusLine.getStatusCode() == HttpStatus.SC_OK) { 
       ByteArrayOutputStream out = new ByteArrayOutputStream(); 
       response.getEntity().writeTo(out); 
       out.close(); 
       responseString = out.toString(); 
      } else { 
       // Closes the connection. 
       response.getEntity().getContent().close(); 
       throw new IOException(statusLine.getReasonPhrase()); 
      } 
     } catch (ClientProtocolException e) { 
      // TODO Handle problems.. 
     } catch (IOException e) { 
      // TODO Handle problems.. 
     } 
     return responseString; 
    } 

} 

얼마나 AsyncTask를에서 활동에서 호출하는 방법?

public class MainActivity extends Activity { 

    private ProgressDialog progress; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     new AsyncTask<Void, Void, String>() { 

      @Override 
      protected void onPreExecute() { 
       super.onPreExecute(); 
       showProgressDialog("Please Wait..."); 
      } 

      @Override 
      protected String doInBackground(Void... params) { 
       WebServiceRequestManager manager = new WebServiceRequestManager(); 
       return manager.getMethod("http://50.57.145.165:8080/FirstGroupRailApps/jservices/rest/a/destinationdashboard?crsCode=add"); 
      } 

      @Override 
      protected void onPostExecute(String result) { 
       super.onPostExecute(result); 
       System.out.println("Respose : " + result); 
       hideProgressDialog(); 
      } 
     }.execute(); 
    } 

    public void showProgressDialog(final String msg) { 

     runOnUiThread(new Runnable() { 
      public void run() { 
       if (progress == null || !progress.isShowing()) { 
        progress = ProgressDialog.show(MainActivity.this, "", msg); 
       } 
      } 
     }); 
    } 

    public void hideProgressDialog() { 
     runOnUiThread(new Runnable() { 

      @Override 
      public void run() { 
       try { 
        if (progress.isShowing()) 
         progress.dismiss(); 
       } catch (Throwable e) { 

       } 
      } 
     }); 
    } 

} 
2

나의 제안은 다음과 같은 이유로 AndroidAsyncHttp (LoopJ)를 사용하는 것.
1) 코드 구조가 작고 우아합니다.
2) 사용하기 쉽습니다.
3) 성능이 정말 빠릅니다.

관련 문제