Android中的UnknownHost异常

时间:2012-06-21 09:54:47

标签: android

我的应用程序经常向servlet发送请求,但自从上一天开始提供 UnknownHostException异常。我不知道自1个月以来工作正常的代码有什么问题。

我已在我的清单文件中添加了访问互联网的权限。 我的servlet在PC浏览器上运行良好。

我在Android中调用servlet的代码是:

String url = "http://sampark.iiit.ac.in:8080/VTSServlets/CurrentTripInfo?mobilenum=##########&lat=10&long=10"
String response = getResponse(url);



public static String getResponse(final String url)
 {
        final StringBuilder builder = new StringBuilder();
    final HttpClient client = new DefaultHttpClient();

    System.out.println("URL :: " + url);
    final HttpGet httpGet = new HttpGet(url);
    try {
        final HttpResponse response = client.execute(httpGet);
        final StatusLine statusLine = response.getStatusLine();
        final int statusCode = statusLine.getStatusCode();
        if (statusCode == 200) {
            final HttpEntity entity = response.getEntity();
            final InputStream content = entity.getContent();
            final BufferedReader reader = new BufferedReader(
                    new InputStreamReader(content));
            String line;
            while ((line = reader.readLine()) != null) {
                builder.append(line);
            }
        } else {
            builder.append("Not 200");
        }
    } catch (final ClientProtocolException e) {
        e.printStackTrace();
    } catch (final IOException e) {
        e.printStackTrace();
    }

    return builder.toString();
}

}

我已检查了所有要求,但不知道它是如何突然给出UnknownHost异常的?我正在Android手机上测试我的应用程序。

2 个答案:

答案 0 :(得分:0)

只是关闭你的模拟器而不是运行应用程序意味着你需要重新启动你的模拟器,这是由于连接问题,如果你在设备中运行而不是断开网络连接,如wifi禁用和启用它后检查这个问题是网络连接问题的bcz和webserivce应用程序的另一个问题,意味着从网络首先检查连接数据或图像,如下所示,而不是你的代码

在您的活动或课程中添加此方法

  protected boolean checkConnection(){ 
    ConnectivityManager conMan = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);

    NetworkInfo networkInfo = conMan.getActiveNetworkInfo();

    final boolean connected = networkInfo != null
            && networkInfo.isAvailable()
            && networkInfo.isConnected();

    if ( !connected) {
        Toast.makeText(
                this,
                "Failed to connect to internet. Check internet connection!",
                Toast.LENGTH_LONG).show();
        return false;
    }
    return true;
}

不仅可以在互联网上添加清单,还可以在此网络状态下添加检查以上条件的权限

 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 

并检查下面给出的连接条件

if(checkConnection()){

// Do here your all code as condition successfully satisfied
  }

答案 1 :(得分:0)

检查完您的代码是否正常,请检查您的移动设置是否连接。 尝试卸载并重新安装应用程序(它可能会工作)并在浏览器中加载网址(检查网址返回json但是在它返回之前?)