URL не доступен в коде Java - PullRequest
0 голосов
/ 30 мая 2011

URL-адрес, доступный из браузера, дает код ответа 404 при запуске в коде Java.

В чем проблема ??? .. Может кто-нибудь объяснить мне об этом

public String login(String url) {
        URL targetURL;
        long start = 0;
        long end = 0;
        float difference = 0;
        HttpURLConnection httpURLConnection;
        StringBuffer strbufstatus = new StringBuffer();
        try {
            //Connecting to the url
            targetURL = new URL(url);

            start = System.currentTimeMillis();

            httpURLConnection = (HttpURLConnection) targetURL.openConnection();

            httpURLConnection.setUseCaches(false);

            httpURLConnection.setAllowUserInteraction(false);

            httpURLConnection.setDoInput(true);

            httpURLConnection.setRequestMethod("GET");

            httpURLConnection.connect();

            //Getting the respond Code
            int responseCode = httpURLConnection.getResponseCode();

            strbufstatus.append("Response Code===> " + responseCode + "<br>");

            if(responseCode==200){


            // System.out.println("respondcode===> " + responseCode);

            end = System.currentTimeMillis();

            //Calculating the response time

            difference = (end - start);

            difference = difference / 1000;

            // System.out.println("Response Time===> " + difference);

            strbufstatus.append("Rsponse time===> " + difference + "<br>");
            }
            } catch (IOException ex) {
            if (ex.toString().contains("java.net.UnknownHostException:")) {

                strbufstatus.append(" - UnknownHostException has occured during Httpconnection\n");
            } else if (ex.toString().contains("java.net.MalformedURLException: unknown protocol:")) {
                strbufstatus.append(" - Unknown Protocol\n");
            } else if (ex.toString().contains("java.net.ConnectException: Connection timed out: connect")) {
                strbufstatus.append("Connection TimedOut\n");
            } else {
                strbufstatus.append("IOException has occured during Httpconnection \n");
            }
            ex.printStackTrace();
        }
        System.out.println("Status" +strbufstatus);
        return strbufstatus.toString();


    }

Ответы [ 3 ]

5 голосов
/ 30 мая 2011

Следующие могут быть проблемы:

  • Неверный код (откройте код, если вы сомневаетесь в этом случае)
  • Вы находитесь за прокси-сервером, браузер настроил его, но ваша программа не имеет
  • если вы пытаетесь получить доступ к защищенному URL HTTPS, тогда конфигурация сертификата
1 голос
/ 30 мая 2011

Из википедии с кодом ошибки 404:

Сообщение об ошибке 404 или Not Found - это стандартный код ответа HTTP, указывающий, что клиент смог установить связь с сервером, но сервер не смог найти то, что было запрошено.

Должна быть читаемая человеком "фраза разума", объясняющая , что не было найдено. Вы просто читаете код ответа - прочитайте и распечатайте дополнительно:

String responseMessage = httpUrlConnection.responseMessage();
0 голосов
/ 30 мая 2011

Одна из возможностей состоит в том, что URL содержит некоторые символы, которые недопустимы в URL, например, пробел или что-то вне диапазона ASCII.Это нужно каким-то образом преобразовать, чтобы отправить как URL, например как escape-последовательности% HH.Браузеры делают это автоматически при вводе адреса, но не все делают это одинаково.Например, некоторые используют рекомендуемое в настоящее время соглашение о преобразовании в последовательности UTF-8, но некоторые используют ISO-8859-1.Некоторые преобразовывают пространство в +, а некоторые в% 20.Если вы хотите, чтобы ваша программа обрабатывала URL-адрес так же, как браузер, вы должны правильно кодировать код Java.

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