如何解决java.net.UnknownHostException

yog*_*nik 5 android unknown-host

我已在清单文件中获得互联网许可。我的移动网络连接也正在工作。

/**
 * Created by Yogesh on 5/07/2016.
 */
public class All_Item_Fragment extends android.support.v4.app.ListFragment {
    // Declare Variables
    JSONArray jsonarray = null;
    ListView list;
    ListViewAdapter adapter;
    ArrayList<HashMap<String, String>> itemlist;
    static String NAME = "name";
    static String DESCRIPTION = "Description";
    static String PRICE = "price";
    static String IMAGE = "image_path";

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.all_item_layout, container, false);
        itemlist = new ArrayList<HashMap<String, String>>();
        new ReadJSON().execute();
        list = (ListView) view.findViewById(android.R.id.list);

        return view;
    }

    private class ReadJSON extends AsyncTask<Void, Void, Void> {
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }

        @Override
        protected Void doInBackground(Void... params) {
            // Create an array
            itemlist = new ArrayList<HashMap<String, String>>();
            // Retrieve JSON Objects from the given URL address
            JSONObject jsonobject = JSONfunctions.getJSONfromURL("http://mahatiffin.com/web/selectallmenu.php");

            try {
                // Locate the array name in JSON
                jsonarray = jsonobject.getJSONArray("AllMenu");

                for (int i = 0; i < jsonarray.length(); i++) {
                    HashMap<String, String> map = new HashMap<String, String>();
                    jsonobject = jsonarray.getJSONObject(i);
                    // Retrive JSON Objects
                    map.put("name", jsonobject.getString("name"));
                    map.put("Description", jsonobject.getString("Description"));
                    map.put("price", jsonobject.getString("price"));
                    map.put("image_path", jsonobject.getString("image_path"));
                    // Set the JSON Objects into the array
                    itemlist.add(map);
                }
            } catch (JSONException e) {
                Log.e("Error", e.getMessage());
                e.printStackTrace();
            }
            return null;
        }

        @Override
        protected void onPostExecute(Void args) {
            // Pass the results into ListViewAdapter.java
            adapter = new ListViewAdapter(getActivity(), itemlist);
            // Set the adapter to the ListView
            list.setAdapter((ListAdapter) adapter);
        }
    }
}


public class JSONfunctions {
    public static JSONObject getJSONfromURL(String url) {
        InputStream is = null;
        String result = "";
        JSONObject jArray = null;

        // Download JSON data from URL
        try {
            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost(url);
            HttpResponse response = httpclient.execute(httppost);
            HttpEntity entity = response.getEntity();
            is = entity.getContent();

        } catch (Exception e) {
            Log.e("log_tag", "Error in http connection " + e.toString());
        }

        // Convert response to string
        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    is, "iso-8859-1"), 8);
            StringBuilder sb = new StringBuilder();
            String line = null;
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }
            is.close();
            result = sb.toString();
        } catch (Exception e) {
            Log.e("log_tag", "Error converting result " + e.toString());
        }

        try {

            jArray = new JSONObject(result);
        } catch (JSONException e) {
            Log.e("log_tag", "Error parsing data " + e.toString());
        }

        return jArray;
    }
}
Run Code Online (Sandbox Code Playgroud)

在可能的片段页面中,什么都没有显示,只会显示空白页面。

在java.util.concurrent.FutureTask $ Sync.innerRun(FutureTask.java:305)在java.util.concurrent.FutureTas ...(FutureTask.java:137)处调用(AsyncTask.java:287)。 AsyncTask $ SerialExecutor $ 1.run(AsyncTask.java:230)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:569) java.lang.Thread.run(Thread.java:856)05-18 17:43:12.420 27019-27019 / com.androidbelieve.MahaTiffin W / FragmentManager:moveToState:Veg_Item_Fragment {415d7030#1 id = 0x7f0c00a0 android的片段状态switcher:2131493024:1}未内联更新;找到了预期的状态3 2 05-18 17:43:12.530 27019-27104 / com.androidbelieve.MahaTiffin E / log_tag:http连接java.net.UnknownHostException中的错误:无法解析主机“ mahatiffin.com”:没有与主机名关联的地址05-18 17:43:12.540 27019-27104 / com.androidbelieve.MahaTiffin E / log_tag:转换结果java.lang.NullPointerException 05-18 17:43时出错:12.540 27019-27104 / com.androidbelieve.MahaTiffin E / log_tag:解析数据org.json.JSONException:输入结束于字符0的05-18 17:43:12.570 27019-27104 / com.androidbelieve.MahaTiffin W / dalvikvm:threadid = 14:线程以未捕获的异常退出(group = 0x40e11378)05-18 17:43:12.570 27019-27104 / com.androidbelieve.MahaTiffin I / Process:发送信号。PID:27019 SIG:9 540 27019-27104 / com.androidbelieve.MahaTiffin E / log_tag:解析数据org.json.JSONException:输入在字符0的结尾处05-18 17:43:12.570 27019-27104 / com.androidbelieve.MahaTiffin W / dalvikvm :threadid = 14:线程以未捕获的异常退出(group = 0x40e11378)05-18 17:43:12.570 27019-27104 / com.androidbelieve.MahaTiffin I / Process:正在发送信号。PID:27019 SIG:9 540 27019-27104 / com.androidbelieve.MahaTiffin E / log_tag:解析数据org.json.JSONException:输入在字符0的结尾处05-18 17:43:12.570 27019-27104 / com.androidbelieve.MahaTiffin W / dalvikvm :threadid = 14:线程以未捕获的异常退出(group = 0x40e11378)05-18 17:43:12.570 27019-27104 / com.androidbelieve.MahaTiffin I / Process:正在发送信号。PID:27019 SIG:9

我该如何解决..

小智 7

原因:通常,当您无法解析所提供URL的DNS记录时,就会触发UnknownHostException。该操作有一个合理的超时时间,但是如果您的Wi-Fi连接较弱或设备上的信号不足,则在发送请求和接收响应之间可能会中断通信,因此您的设备没有收到响应,因此认为这是DNS超时。

长话短说,有两个例外的主要原因:

  1. 如果您的Wi-Fi信号较弱。
  2. 如果您的设备已连接到Wi-Fi,但没有互联网可用。

解决方案:在请求之前检查互联网的可用性

public static boolean isInternetOn(Context context) {

    if (isMobileOrWifiConnectivityAvailable(context)) {
        try {
            HttpURLConnection urlc = (HttpURLConnection) (new URL("http://www.google.com").openConnection());
            urlc.setRequestProperty("User-Agent", "Test");
            urlc.setRequestProperty("Connection", "close");
            urlc.setConnectTimeout(1500);
            urlc.connect();
            return (urlc.getResponseCode() == 200);
        } catch (Exception e) {
          DebugLog.console("Couldn't check internet connection Exception is : " + e);
        }
    } else {
        DebugLog.console("Internet not available!");
    }
    return false;
}


public static boolean isMobileOrWifiConnectivityAvailable(Context ctx) {
    boolean haveConnectedWifi = false;
    boolean haveConnectedMobile = false;


    try {
        ConnectivityManager cm = (ConnectivityManager) ctx.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo[] netInfo = cm.getAllNetworkInfo();
        for (NetworkInfo ni : netInfo) {
            if (ni.getTypeName().equalsIgnoreCase("WIFI"))
                if (ni.isConnected()) {
                    haveConnectedWifi = true;
                }
            if (ni.getTypeName().equalsIgnoreCase("MOBILE"))
                if (ni.isConnected()) {
                    haveConnectedMobile = true;
                }
        }
    } catch (Exception e) {
        DebugLog.console("[ConnectionVerifier] inside isInternetOn() Exception is : " + e.toString());
    }
    return haveConnectedWifi || haveConnectedMobile;
}
Run Code Online (Sandbox Code Playgroud)

  • @joe jeff,但是,我认为,在请求之前检查连接并不能避免在发送请求和接收响应之间或接收响应时连接变弱。我对吗? (2认同)

Suh*_*war 0

  connection successful
    {
    "AllMenu": [{
        "0": "3",
        "menu_id": "3",
        "1": "Aloo Parathas",
        "name": "Aloo Parathas",
        "2": "170",
        "price": "170",
        "3": "fjhsjfh jfhrwkjfh wejfhwkh ewjfhwjeh ewjfhkwe ewbfjeh wejhfkjwhhef ehfkwh wewjrh",
        "Description": "fjhsjfh jfhrwkjfh wejfhwkh ewjfhwjeh ewjfhkwe ewbfjeh wejhfkjwhhef ehfkwh wewjrh",
        "4": "http:\/\/mahatiffin.com\/uploads\/1.jpg",
        "image_path": "http:\/\/mahatiffin.com\/uploads\/1.jpg",
        "5": "Regular-menu",
        "menu_cat": "Regular-menu",
        "6": "1",
        "type_id": "1"
    }, {
        "0": "7",
        "menu_id": "7",
        "1": "ZzaxZxszsc",
        "name": "ZzaxZxszsc",
        "2": "343",
        "price": "343",
        "3": "fjhsjfh jfhrwkjfh wejfhwkh ewjfhwjeh ewjfhkwe ewbfjeh wejhfkjwhhef ehfkwh wewjrh",
        "Description": "fjhsjfh jfhrwkjfh wejfhwkh ewjfhwjeh ewjfhkwe ewbfjeh wejhfkjwhhef ehfkwh wewjrh",
        "4": "http:\/\/mahatiffin.com\/uploads\/2.jpg",
        "image_path": "http:\/\/mahatiffin.com\/uploads\/2.jpg",
        "5": "Regular-menu",
        "menu_cat": "Regular-menu",
        "6": "1",
        "type_id": "1"
    }, {
        "0": "8",
        "menu_id": "8",
        "1": "sdcsdvsd",
        "name": "sdcsdvsd",
        "2": "435",
        "price": "435",
        "3": "fjhsjfh jfhrwkjfh wejfhwkh ewjfhwjeh ewjfhkwe ewbfjeh wejhfkjwhhef ehfkwh wewjrh",
        "Description": "fjhsjfh jfhrwkjfh wejfhwkh ewjfhwjeh ewjfhkwe ewbfjeh wejhfkjwhhef ehfkwh wewjrh",
        "4": "http:\/\/mahatiffin.com\/uploads\/3.jpg",
        "image_path": "http:\/\/mahatiffin.com\/uploads\/3.jpg",
        "5": "Special-menu",
        "menu_cat": "Special-menu",
        "6": "2",
        "type_id": "2"
    }, {
        "0": "9",
        "menu_id": "9",
        "1": "sadcasc",
        "name": "sadcasc",
        "2": "435",
        "price": "435",
        "3": "fjhsjfh jfhrwkjfh wejfhwkh ewjfhwjeh ewjfhkwe ewbfjeh wejhfkjwhhef ehfkwh wewjrh",
        "Description": "fjhsjfh jfhrwkjfh wejfhwkh ewjfhwjeh ewjfhkwe ewbfjeh wejhfkjwhhef ehfkwh wewjrh",
        "4": "http:\/\/mahatiffin.com\/uploads\/4.jpg",
        "image_path": "http:\/\/mahatiffin.com\/uploads\/4.jpg",
        "5": "Regular-menu",
        "menu_cat": "Regular-menu",
        "6": "2",
        "type_id": "2"
    }, {
        "0": "10",
        "menu_id": "10",
        "1": "sadcasc",
        "name": "sadcasc",
        "2": "456",
        "price": "456",
        "3": "fjhsjfh jfhrwkjfh wejfhwkh ewjfhwjeh ewjfhkwe ewbfjeh wejhfkjwhhef ehfkwh wewjrh",
        "Description": "fjhsjfh jfhrwkjfh wejfhwkh ewjfhwjeh ewjfhkwe ewbfjeh wejhfkjwhhef ehfkwh wewjrh",
        "4": "http:\/\/mahatiffin.com\/uploads\/5.jpg",
        "image_path": "http:\/\/mahatiffin.com\/uploads\/5.jpg",
        "5": "Regular-menu",
        "menu_cat": "Regular-menu",
        "6": "1",
        "type_id": "1"
    }, {
        "0": "11",
        "menu_id": "11",
        "1": "sda",
        "name": "sda",
        "2": "234",
        "price": "234",
        "3": "fjhsjfh jfhrwkjfh wejfhwkh ewjfhwjeh ewjfhkwe ewbfjeh wejhfkjwhhef ehfkwh wewjrh",
        "Description": "fjhsjfh jfhrwkjfh wejfhwkh ewjfhwjeh ewjfhkwe ewbfjeh wejhfkjwhhef ehfkwh wewjrh",
        "4": "http:\/\/mahatiffin.com\/uploads\/6.JPG",
        "image_path": "http:\/\/mahatiffin.com\/uploads\/6.JPG",
        "5": "Special-menu",
        "menu_cat": "Special-menu",
        "6": "2",
        "type_id": "2"
    }, {
        "0": "12",
        "menu_id": "12",
        "1": "sadcasc",
        "name": "sadcasc",
        "2": "324",
        "price": "324",
        "3": "fjhsjfh jfhrwkjfh wejfhwkh ewjfhwjeh ewjfhkwe ewbfjeh wejhfkjwhhef ehfkwh wewjrh",
        "Description": "fjhsjfh jfhrwkjfh wejfhwkh ewjfhwjeh ewjfhkwe ewbfjeh wejhfkjwhhef ehfkwh wewjrh",
        "4": "http:\/\/mahatiffin.com\/uploads\/7.JPEG",
        "image_path": "http:\/\/mahatiffin.com\/uploads\/7.JPEG",
        "5": "Regular-menu",
        "menu_cat": "Regular-menu",
        "6": "1",
        "type_id": "1"
    }, {
        "0": "14",
        "menu_id": "14",
        "1": "sadcasc",
        "name": "sadcasc",
        "2": "232",
        "price": "232",
        "3": "fjhsjfh jfhrwkjfh wejfhwkh ewjfhwjeh ewjfhkwe ewbfjeh wejhfkjwhhef ehfkwh wewjrh",
        "Description": "fjhsjfh jfhrwkjfh wejfhwkh ewjfhwjeh ewjfhkwe ewbfjeh wejhfkjwhhef ehfkwh wewjrh",
        "4": "http:\/\/mahatiffin.com\/uploads\/1.jpg",
        "image_path": "http:\/\/mahatiffin.com\/uploads\/1.jpg",
        "5": "Special-menu",
        "menu_cat": "Special-menu",
        "6": "1",
        "type_id": "1"
    }, {
        "0": "15",
        "menu_id": "15",
        "1": "sadcasc",
        "name": "sadcasc",
        "2": "325",
        "price": "325",
        "3": "fjhsjfh jfhrwkjfh wejfhwkh ewjfhwjeh ewjfhkwe ewbfjeh wejhfkjwhhef ehfkwh wewjrh",
        "Description": "fjhsjfh jfhrwkjfh wejfhwkh ewjfhwjeh ewjfhkwe ewbfjeh wejhfkjwhhef ehfkwh wewjrh",
        "4": "http:\/\/mahatiffin.com\/uploads\/2.jpg",
        "image_path": "http:\/\/mahatiffin.com\/uploads\/2.jpg",
        "5": "Special-menu",
        "menu_cat": "Special-menu",
        "6": "2",
        "type_id": "2"
    }, {
        "0": "16",
        "menu_id": "16",
        "1": "sadcasc",
        "name": "sadcasc",
        "2": "344",
        "price": "344",
        "3": "fjhsjfh jfhrwkjfh wejfhwkh ewjfhwjeh ewjfhkwe ewbfjeh wejhfkjwhhef ehfkwh wewjrh",
        "Description": "fjhsjfh jfhrwkjfh wejfhwkh ewjfhwjeh ewjfhkwe ewbfjeh wejhfkjwhhef ehfkwh wewjrh",
        "4": "http:\/\/mahatiffin.com\/uploads\/4.jpg",
        "image_path": "http:\/\/mahatiffin.com\/uploads\/4.jpg",
        "5": "Regular-menu",
        "menu_cat": "Regular-menu",
        "6": "1",
        "type_id": "1"
    }, {
        "0": "18",
        "menu_id": "18",
        "1": "edfwdfewr",
        "name": "edfwdfewr",
        "2": "23",
        "price": "23",
        "3": "xasx scasc dqedqd edbhwd dwh3ej1 1wh1e2ue 3eh3ue e2euh23ueej ewnwencj",
        "Description": "xasx scasc dqedqd edbhwd dwh3ej1 1wh1e2ue 3eh3ue e2euh23ueej ewnwencj",
        "4": "http:\/\/mahatiffin.com\/uploads\/4.jpg",
        "image_path": "http:\/\/mahatiffin.com\/uploads\/4.jpg",
        "5": "Regular-menu",
        "menu_cat": "Regular-menu",
        "6": "2",
        "type_id": "2"
    }, {
        "0": "19",
        "menu_id": "19",
        "1": "Aloo Gobi",
        "name": "Aloo Gobi",
        "2": "250",
        "price": "250",
        "3": "Aloo Sabzi, 2 Puris, Rice, Dal, Shrikhand",
        "Description": "Aloo Sabzi, 2 Puris, Rice, Dal, Shrikhand",
        "4": "http:\/\/mahatiffin.com\/uploads\/1.jpg",
        "image_path": "http:\/\/mahatiffin.com\/uploads\/1.jpg",
        "5": "Special-menu",
        "menu_cat": "Special-menu",
        "6": "1",
        "type_id": "1"
    }]
}
Run Code Online (Sandbox Code Playgroud)

从页面开头的 Php Json 中删除字符串“连接成功”。

2)问题类强制转换异常:更改如下:

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.all_item_layout, container, false);
        itemlist = new ArrayList<HashMap<String, String>>();
        new ReadJSON().execute();
        list = (ListView) view.findViewById(android.R.id.list);

        // Pass the results into ListViewAdapter.java
        adapter = new ListViewAdapter(getActivity(), itemlist);
        // Set the adapter to the ListView
        list.setAdapter((ListAdapter) adapter);
        return view;
    }
Run Code Online (Sandbox Code Playgroud)

@Override
        protected void onPostExecute(Void args) {
          adapter.notifydatasetchanged();
        }
Run Code Online (Sandbox Code Playgroud)

从方法中删除“ itemlist = new ArrayList>(); ” doInBackground()