Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p><strong>you need to use async tasks to do any http calls, otherwise your app will freeze till the operation completed:</strong></p> <p>start with simple sysnc class to execute your http request. also you need some kind of handlers to get the result back, once the task completed, you can user interfaces or android <a href="http://developer.android.com/reference/android/os/Handler.html" rel="nofollow">handler</a>, I like interfaces!</p> <pre><code>class MyHttpTask extends AsyncTask&lt;View, View, String&gt; { String url = null; HttpResultHandler handler = null; public final static int ERROR_CONNECTION_TIMEOUT = 1000; public final static int ERROR_SOCKET_TIMEOUT = 2000; private int error_code = 0; public MyHttpTask(String url, HttpResultHandler handler) { this.url = url; this.handler = handler; } @Override protected String doInBackground(View... arg0) { try { HttpClient httpClient = new DefaultHttpClient(); HttpPost httpPost = new HttpPost(url); JSONObject jo = new JSONObject(); jo.put("tag", tag); // Prepare JSON to send by setting the entity httpPost.setEntity(new StringEntity(jo.toString(), "UTF-8")); // Set up the header types needed to properly transfer JSON httpPost.setHeader("Content-Type", "application/json"); httpPost.setHeader("Accept-Encoding", "application/json"); httpPost.setHeader("Accept-Language", "en-US"); HttpResponse response = httpClient.execute(httpPost); HttpEntity entity = response.getEntity(); InputStream is = entity.getContent(); String result = // read your stream as string or any you might prefer byte[] return result; } catch (UnresolvedAddressException e) { return null; } catch (UnknownHostException e) { return null; } catch (ConnectTimeoutException e) { error_code = ERROR_CONNECTION_TIMEOUT; return null; } catch(SocketTimeoutException e) { error_code = ERROR_SOCKET_TIMEOUT; return null; } catch (IOException e) { return null; } catch (Exception e) { return null; } } @Override protected void onPostExecute(String result) { if (result!=null) { handler.onSuccess(result); } else { handler.OnFailure(errorCode); } } } </code></pre> <p><strong>here is a simple interface that reports success or fail operations:</strong></p> <pre><code>static interface HttpResultHandler { public void onSuccess(String result); public void OnFailure(int errorCode); } </code></pre> <p><strong>to test your solution:</strong></p> <pre><code>private void testHttpTask() { // here you can block the UI using any type of progress bar String url = "http://www.something.com"; new MyHttpTask(url, new HttpResultHandler() { @Override public void onSuccess(String result) { // TODO Auto-generated method stub // here you get success result // dismiss any loading progress bars } @Override public void OnFailure(int error_code) { // TODO Auto-generated method stub // here you get failure // dismiss any loading progress bars, and do your recovery stuff } }).execute(); } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload