0

http サーバーが正常に応答しているかどうかを確認する方法を作成しました。私はApacheコンポーネントを使用しています。

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 であっても、条件内に入らず、例外もスローしません。

私が間違っていることは何ですか??

お時間をいただきありがとうございます!

4

1 に答える 1

1

HTTP レスポンスのステータス コードを取得します。

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

これが役立つかどうか教えてください:)

于 2013-10-02T11:10:21.497 に答える