Я пытаюсь записать программу, чтобы сделать автоматизированное тестирование на моем веб-приложении. Для выполнения этого я открываю использование соединения HttpURLConnection.
Одна из страниц, которые я пытаюсь протестировать, выполняет 302 перенаправления. Мой тестовый код похож на это:
URL currentUrl = new URL(urlToSend);
HttpURLConnection connection = (HttpURLConnection) currentUrl.openConnection();
connection.connect();
system.out.println(connection.getURL().toString());
Так, скажем, это, urlToSend является http://www.foo.com/bar.jsp, и что эта страница перенаправляет Вас на http://www.foo.com/quux.jsp. Мой println оператор должен распечатать http://www.foo.com/quux.jsp, правильно?
НЕПРАВИЛЬНО.
Перенаправления никогда не происходит, и оно распечатывает исходный URL. Однако, если я изменяю переключатель connection.connect () строка с вызовом к connection.getResponseCode (), это волшебно работает.
URL currentUrl = new URL(urlToSend);
HttpURLConnection connection = (HttpURLConnection) currentUrl.openConnection();
//connection.connect();
connection.getResponseCode();
system.out.println(connection.getURL().toString());
Почему я вижу это поведение? Я делаю что-то не так?
Спасибо за справку.
рабочие процессы являются способом сегментирования выполнения вашего веб-сайта на нескольких экзамене. Вы делаете это на пару причин, один, если один из рабочих озадачен вопросами времени пробега, это не забирает других. Например, если запрашивается HTML-запрос, который приводит к тому, что процесс не работает, то только другие запросы, которые обрабатываются тем, что один рабочий процессор будет убит. Другим примером является то, что один запрос может вызвать блокировку против других потоков, обрабатываемых тем же рабочим.
Насколько вам нужно, выполните тестирование нагрузки. Усердно ударил приложение и посмотрите, что происходит только с одним. Затем добавьте еще немного и нажмите его снова. В какой-то момент вы достигнете по-настоящему насыщению сети машин, диска, CPU и RAM. Вот когда вы знаете, у вас есть правильный баланс.
Кстати, вы можете управлять количеством потоков, используемых на процессу работника через файл Machine.config. Я считаю, что ключ - MaxWorkerTreads.
Теперь остерегайтесь, если вы используете сеанс, состояние сеанса не распространяется между рабочими процессами. Я вообще рекомендую избегать сеанса в любом случае, но это что-то рассмотреть.
Для всех намерений и целей вы можете рассмотреть каждый рабочий процесс как собственный отдельный веб-сервер. За исключением того, что они работают на той же коробке.
-121--946659- Метод подключения ()
просто создает соединение. Вы должны совершить запрос (по телефону getInputStream ()
, getResponsecode ()
, или GetResponseMessage ()
) для возврата и обработки ответа.
Попробуйте SetFollowredirets , как это может помочь. На самом деле, попробуйте getFollowredirets
, чтобы увидеть, если это проблема, сначала (вряд ли, так как это верно по умолчанию).
Редактировать: Если это не ваша проблема, я бы попробую что-то читать из соединения (как вы делаете с GetResponsocode
, но я бы тоже старался GetHeaderfield
, чтобы увидеть, если Чтение чего-либо вообще, вызывает уважение перенаправления).
Если я не пропустил что-то очевидное, я думаю, что есть простой ответ.
Для прямоугольной области MXn, количество точек P, RADIUS R:
, это O (P), предполагая, что P - переменная интерес.
-121--3006996-Метод . Способ подключения () реализован в классе URLConnection и не переопределен классом httpurLconnection .
Класс URLConnection не знает о HTTP, и поэтому не должен следовать за перенаправленным http, даже если он создал реальное соединение.
Если вы хотите, чтобы поведенческое поведение в протокол HTTP, вы, вероятно, хотите придерживаться методов, реализованных в классе httpurlconnection, как метод getResponsecode ().