2013-03-15 207 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; 
} 

告訴我,如果這有助於:)