Java HTTP код ответа, URL, IOException - PullRequest
0 голосов
/ 09 февраля 2011

Я получаю ответ 503 от сервера, с которым пытаюсь установить связь. Теперь, это показывает мне это в журнале, но я хочу поймать IOException, которое оно запускает, и обработать его, если и только если код ответа 503, и ничего больше. Как бы я это сделал?

EDIT:

Вот часть моего кода:

inURL = new BufferedReader(new InputStreamReader(myURL.openStream()));

String str;
while ((str = inURL.readLine()) != null) {
    writeTo.write(str + "\n");
}

inURL.close();

Ответы [ 3 ]

4 голосов
/ 09 февраля 2011

Если используется java.net.HttpURLConnection, используйте метод getResponseCode()

При использовании org.apache.commons.httpclient.HttpClient, executeMethod(...) возвращает код ответа

0 голосов
/ 09 февраля 2011

Обработайте нужный вам случай в вашем предложении catch IOEXception, если оно попадает в этот раздел кода.

Проверьте код состояния http, если он равен 503, обработайте его так, как вы хотите, если не выведите исключение снова.

0 голосов
/ 09 февраля 2011

вот HTTPClient, который я сделал:

public class HTTPClient {

    /**
     * Request the HTTP page.
     * @param uri the URI to request.
     * @return the HTTP page in a String.
     */
    public String request(String uri){

        // Create a new HTTPClient.
        HttpClient client = new HttpClient();
        // Set the parameters
        client.getParams().setParameter("http.useragent", "Test Client");
        //5000ms
        client.getParams().setParameter("http.connection.timeout",new Integer(5000));

        GetMethod method  = new GetMethod();

        try{
            method.setURI(new URI(uri, true));
            int returnCode = client.executeMethod(method);

            // The Get method failed.
            if(returnCode != HttpStatus.SC_OK){
                System.err.println("Unable to fetch default page," +
                        " status code : " + returnCode);
            }

            InputStream in = method.getResponseBodyAsStream();

            // The input isn't null.
            if (in != null) {
                StringBuilder sb = new StringBuilder();
                String line;

                try {
                    BufferedReader reader = new BufferedReader(new InputStreamReader(in, "UTF-8"));
                    while ((line = reader.readLine()) != null) {
                        sb.append(line).append("\n");
                    }
                } finally {
                    in.close();
                }
                //return statement n0
                return sb.toString();
                   } 
            else {  
                //return statement n1
                return null;
            }

        } catch (HttpException he) {
            System.err.println("    HTTP failure");
        } catch (IOException ie) {
            System.err.println("    I/O problem");
        } finally {
          method.releaseConnection();
        }
        //return statement n2
        return null;        
    }
}

Может быть, он может помочь вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...