无法从Server获取详细信息

时间:2016-12-13 06:28:44

标签: android

下面的代码我试图从在线URL获取数据,但它显示未知的主机异常

private String urlJsonArry_local =" http://www.endorecord.in/endorecord/hospitaladmin/Api/device_hospitals.php?deviceid=111";

private void makeJsonArrayRequest() {

    showpDialog();

    JsonArrayRequest req = new JsonArrayRequest(urlJsonArry_local,
            new Response.Listener<JSONArray>() {
                @Override
                public void onResponse(JSONArray response) {
                    Log.d(TAG, response.toString());

                    try {
                        // Parsing json array response
                        // loop through each json object
                        jsonResponse = "";
                        for (int i = 0; i < response.length(); i++) {

                            JSONObject person = (JSONObject) response
                                    .get(i);
                            Toast.makeText(getApplicationContext(), person.toString(), Toast.LENGTH_LONG).show();

                            String name = person.getString("hospitalid");
                            String email = person.getString("hospital_name");

                            /*JSONObject phone = person
                                    .getJSONObject("phone");
                            String home = phone.getString("home");
                            String mobile = phone.getString("mobile");
                            */

                            jsonResponse += "Name: " + name + "\n\n";
                            jsonResponse += "Email: " + email + "\n\n";
                            //jsonResponse += "Home: " + home + "\n\n";
                            //jsonResponse += "Mobile: " + mobile + "\n\n\n";

                        }

                        txtResponse.setText(jsonResponse);

                    } catch (JSONException e) {
                        e.printStackTrace();
                        Toast.makeText(getApplicationContext(),
                                "Error: " + e.getMessage(),
                                Toast.LENGTH_LONG).show();
                    }

                    hidepDialog();
                }
            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    VolleyLog.d(TAG, "Error: " + error.getMessage());
                    Toast.makeText(getApplicationContext(),
                            error.getMessage(), Toast.LENGTH_SHORT).show();
                    hidepDialog();
                }
            });

    // Adding request to request queue
    AppController.getInstance().addToRequestQueue(req);
}

2 个答案:

答案 0 :(得分:0)

您正在执行JSONArray请求,但您的响应位于JSONObject中,因此您需要使用“JSONObjetRequest”进行Web服务调用

JsonObjectRequest getRequest = new JsonObjectRequest(Request.Method.GET, url, null,
    new Response.Listener<JSONObject>() 
    {
        @Override
        public void onResponse(JSONObject response) {   
                        // display response     
            Log.d("Response", response.toString());
        }
    }, 
    new Response.ErrorListener() 
    {
         @Override
         public void onErrorResponse(VolleyError error) {            
            Log.d("Error.Response", response);
       }
    }
);

答案 1 :(得分:0)

您应该使用JsonObjectRequest而不是JsonArrayRequest

private void makeJsonObjectRequest() {

    showpDialog();

    JsonObjectRequest req = new JsonObjectRequest(urlJsonArry_local,
            new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {
                    Log.d(TAG, response.toString());

                    try {
                        // Parsing json array response
                        // loop through each json object
                        JSONArray array = response.getJSONArray("hospital");

                        jsonResponse = "";
                        for (int i = 0; i < array .length(); i++) {

                            JSONObject person = (JSONObject) array 
                                    .get(i);
                            Toast.makeText(getApplicationContext(), person.toString(), Toast.LENGTH_LONG).show();

                            String name = person.getString("hospitalid");
                            String email = person.getString("hospital_name");

                            /*JSONObject phone = person
                                    .getJSONObject("phone");
                            String home = phone.getString("home");
                            String mobile = phone.getString("mobile");
                            */

                            jsonResponse += "Name: " + name + "\n\n";
                            jsonResponse += "Email: " + email + "\n\n";
                            //jsonResponse += "Home: " + home + "\n\n";
                            //jsonResponse += "Mobile: " + mobile + "\n\n\n";

                        }

                        txtResponse.setText(jsonResponse);

                    } catch (JSONException e) {
                        e.printStackTrace();
                        Toast.makeText(getApplicationContext(),
                                "Error: " + e.getMessage(),
                                Toast.LENGTH_LONG).show();
                    }

                    hidepDialog();
                }
            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    VolleyLog.d(TAG, "Error: " + error.getMessage());
                    Toast.makeText(getApplicationContext(),
                            error.getMessage(), Toast.LENGTH_SHORT).show();
                    hidepDialog();
                }
            });

    // Adding request to request queue
    AppController.getInstance().addToRequestQueue(req);
}

使用它。希望能帮到你。