2013-03-15 210 views
0

我做了一个方法来检查http服务器是否响应正常。 我使用的是Apache组件。比较HttpStatus.SC_OK和INT变量

private static int CheckAvailabilityHttp(String pHostName, int pPort) 
{ 
    try { 
     HttpClient httpClient = new DefaultHttpClient(); 
     HttpGet httpGet = new HttpGet(String.format("http://%s:%s",pHostName,pPort)); 
     HttpResponse response = httpClient.execute(httpGet); 
     int status = response.getStatusLine().getStatusCode(); 
     if (HttpStatus.SC_OK == status) { // HttpStatus.SC_OK is 200 and status is 200 
      return ServerStatuses.SUCCESS; 
     } 
    } catch (MalformedURLException e1) { 
     e1.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    return ServerStatuses.FAILED; 
} 

的问题是在比较线:

if (HttpStatus.SC_OK == status) 

即使两个(HttpStatus.SC_OK和状态变量)是200,它doesn't条件内得到......一点也没有”甚至抛出一个异常。

我在做什么错?

谢谢你的时间!

+2

你绝对肯定都是200?您是否调试过并查看了这两个值? – kabuko 2013-03-15 22:56:00

回答

1

获取HTTP响应的状态码。

final int statusCode = getResponse.getStatusLine().getStatusCode(); 
if (statusCode != HttpStatus.SC_OK) { 
    Log.w(getClass().getSimpleName(), "Error " + statusCode + " for URL " + url); 
    return null; 
} 

告诉我,如果这有助于:)