Сервер вернул код ответа HTTP: 403 для URL: (Как это исправить?) - PullRequest
0 голосов
/ 04 марта 2012

Я продолжаю получать вышеуказанную ошибку, когда запускаю приведенный ниже код.Все признаки указывают на проблему с печеньем из того, что я прочитал.Если я прав, как бы я применил CookieManager для решения этой проблемы?Или как бы решить проблему, если это не проблема с COOKIES?

public class Client {

    public Client(){
    }

    String executePost(String targetURL, String urlParameters){
        URL url;
        HttpURLConnection connection = null;

        try{
            //Create connection
            url = new URL(targetURL);
            connection = (HttpURLConnection)url.openConnection();
            connection.setChunkedStreamingMode(0);
            connection.setRequestMethod("POST");
            connection.setRequestProperty("Content-Type", 
                    "application/x-www-form-urlencoded");
            connection.setRequestProperty("Content-Length", "" + 
                    Integer.toString(urlParameters.getBytes().length));
            connection.setRequestProperty("Content-Language", "en-US"); 

            connection.setUseCaches(false);
            connection.setDoInput(true);
            connection.setDoOutput(true);

            //send Request 
            DataOutputStream dataout = new DataOutputStream(connection.getOutputStream());
            dataout.writeBytes(urlParameters);
            dataout.flush();
            dataout.close();

            //get response
            InputStream is = connection.getInputStream();
            BufferedReader br = new BufferedReader(new InputStreamReader(is));
            String line;
            StringBuffer response = new StringBuffer();

            while((line = br.readLine()) != null){
                response.append(line);
                response.append('\n');

            }
            System.out.println(response.toString());
            br.close();
            return response.toString();
        }catch(Exception e){
            System.out.println("Unable to full create connection");
            e.printStackTrace();
            return null;
        }finally {

            if(connection != null) {
                connection.disconnect(); 
            }
        }
    }
}

Ответы [ 3 ]

3 голосов
/ 06 марта 2012

Я удалил: connection.setChunkedStreamingMode (0) ; и код работал как надо

String executePost(String targetURL, String urlParameters){

    URL url;
    HttpURLConnection connection = null;        
    try{
        //Create connection

        url = new URL(targetURL);
        connection = (HttpURLConnection)url.openConnection();

        connection.setRequestMethod("POST");
        connection.setRequestProperty("Content-Type", 
                   "application/x-www-form-urlencoded");
        connection.setRequestProperty("Content-Language", "en-US"); 
        connection.setRequestProperty("User-Agent",
                "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11");

        connection.setUseCaches(false);
        connection.setDoInput(true);
        connection.setDoOutput(true);

        //send Request 
        DataOutputStream dataout = new DataOutputStream(connection.getOutputStream());
        dataout.writeBytes(urlParameters);
        dataout.flush();
        dataout.close();

        //get response
        InputStream is = connection.getInputStream();
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        String line;
        StringBuffer response = new StringBuffer();

        while((line = br.readLine()) != null){
            response.append(line);
            response.append('\n');

        }
        System.out.println(response.toString());
        br.close();
        return response.toString();
    }catch(Exception e){
        System.out.println("Unable to full create connection");
        e.printStackTrace();
        return null;
    }finally {

          if(connection != null) {
            connection.disconnect(); 
          }
    }


}
2 голосов
/ 04 марта 2012

Ответ 403 означает «запрещено».

Все признаки указывают на проблему с печеньем из того, что я прочитал. Если я прав, как бы я применил CookieManager для решения этой проблемы? Или как бы решить проблему, если это не проблема с COOKIES?

Это не так просто.

  • Возможно, вам необходимо предоставить действительные учетные данные (в виде файлов cookie, базовых заголовков аутентификации или чего-то еще). Однако вы ожидаете, что сервер ответит 401 в этом случае или 302, чтобы перенаправить ваш браузер на страницу входа.

  • Возможно, вы также указали учетные данные, и их недостаточно для запроса, который вы пытаетесь выполнить.

Лучше всего выяснить, что именно происходит, когда вы пытаетесь войти в систему и использовать службу из веб-браузера. Затем попробуйте повторить это. Кроме того, прочитайте документацию сайта или спросите администрацию сайта, что делать.

Если вы пытаетесь получить доступ к вашему сайту / серверу, вам необходимо выяснить, как реализована защита. Возможно, вы неправильно настроили сервер или пренебрегали настройкой / включением входа в систему.


Маловероятно (IMO), что вы решите эту проблему, просто настроив Диспетчер файлов cookie.

1 голос
/ 06 марта 2012

Если вы видите документацию API setChunkedStreamingMode, там упоминалось, что не все серверы поддерживают этот режим.Вы уверены, что сервер, к которому вы подключаетесь, поддерживает это?

...