0
I’m working on a project where I have to make an app that will fetch information from the database via Json. I’ve done dozens of tutorials and I always end up not being able to receive a reply from Server and not even get any request to the Server.
Here’s the code of the last one I did that I was hoping would work:
Json
{
    "Device": {
        "id": "1198",
        "activo": "1",
        "designacao": "alvaro-digisilent",
        "data_entrada": "2014-07-25",
        "username": "*****",
        "password_admin": "*******",
        "so": "Microsoft Windows",
        "so_versao": "7",
        "obs": "",
        "local_id": "4",
        "cliente_id": "1",
        "tipo_maquina_id": "2",
        "colaboradore_id": "148",
        "factura_id": "1"
    }
}
Mainactivity.java
public class MainActivity extends ListActivity {
    private ProgressDialog pDialog;
    //URL para ir buscar os Devices JSON
    private static String url = "<linkdapaginaquedáojson>";
    //Nomes dos JSON Nodes
    private static final String TAG_DEVICE = "Device";
    private static final String TAG_LOCAL = "local";
    private static final String TAG_FACTURA = "factura";
    //Devices JSONArray
    JSONArray devices = null;
    //Hashmap para a ListView
    ArrayList<HashMap<String, String>> deviceList;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        deviceList = new ArrayList<HashMap<String, String>>();
        ListView listView = getListView();
        //Chamar a ASyncTask para ir buscar o JSON
        new GetDevice().execute();
    }
    //ASyncTask para receber o JSON ao fazer a HTTP Call
    private class GetDevice extends AsyncTask<Void, Void, Void> {
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            //Mostra a barra de progresso
            pDialog = new ProgressDialog(MainActivity.this);
            pDialog.setMessage("Espera que eu tambem esperei");
            pDialog.setCancelable(false);
            pDialog.show();
        }
        @Override
        protected Void doInBackground(Void... arg0) {
            //Criar uma instance da class Service Handler
            ServiceHandler sh = new ServiceHandler();
            //Faz um request ao url e recebe a resposta
            String jsonStr = sh.makeServiceCall(url, ServiceHandler.GET);
            Log.d("MYLOG", "Response= " + jsonStr);
            if (jsonStr != null) {
                try {
                    //Criar um JSON Object
                    JSONObject jsonObj = new JSONObject(jsonStr);
                    devices = jsonObj.getJSONArray(TAG_DEVICE);
                    JSONObject d = devices.getJSONObject(0);
                    String device = d.getString(TAG_DEVICE);
                    String local = d.getString(TAG_LOCAL);
                    String factura = d.getString(TAG_FACTURA);
                    //Hashmap temporario para apenas um device
                    HashMap<String, String> dev = new HashMap<String, String>();
                    dev.put(TAG_DEVICE, device);
                    dev.put(TAG_FACTURA, factura);
                    dev.put(TAG_LOCAL, local);
                    deviceList.add(dev);
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            } else {
                Log.e("ServiceHandler", "Couldn't get any data from the url");
            }
            return null;
        }
        @Override
        protected void onPostExecute(Void result){
            super.onPostExecute(result);
            //Dismiss da progress bar
            if(pDialog.isShowing())
                pDialog.dismiss();
            //update do parsed JSON para a listview
            ListAdapter adapter = new SimpleAdapter(MainActivity.this, deviceList, R.layout.list_item, new String[]{TAG_DEVICE,
            TAG_FACTURA, TAG_LOCAL}, new int[]{R.id.name, R.id.factura, R.id.local});
            setListAdapter(adapter);
        }
    }
}
Servicehandler.java
public class ServiceHandler {
    static String response = null;
    public final static int GET = 1;
    public ServiceHandler() {
    }
    /**
     * Making service call
     * @url - url to make request
     * @method - http request method
     * */
    public String makeServiceCall(String url, int method) {
        return this.makeServiceCall(url, method, null);
    }
    /**
     * Making service call
     * @url - url to make request
     * @method - http request method
     * @params - http request params
     * */
    public String makeServiceCall(String url, int method,
                                  List<NameValuePair> params) {
        try {
            // http client
            DefaultHttpClient httpClient = new DefaultHttpClient();
            HttpEntity httpEntity = null;
            HttpResponse httpResponse = null;
            if (method == GET) {
                // appending params to url
                if (params != null) {
                    String paramString = URLEncodedUtils
                            .format(params, "utf-8");
                    url += "?" + paramString;
                }
                HttpGet httpGet = new HttpGet(url);
                httpResponse = httpClient.execute(httpGet);
            }
            httpEntity = httpResponse.getEntity();
            response = EntityUtils.toString(httpEntity);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return response;
    }
}
In the tutorial there was also the method POST but since I just want to get information, I took.
What is wrong with me? What other solution can be used to resolve this obstacle?
Peter, where does that title come from in English? Is it a mistake? Or is it a lack of translation?
– Jorge B.
I put it in, I didn’t know what title to give and because it’s the problem...
– Pedro Miguel
Start here: http://answall.com/questions/43288/como-fazer-uma-requisi%C3%A7%C3%A3o-http-get-data-and-reply-with-json/43294#43294
– Lollipop