J2ME HttpConnection бесконечное перенаправление

Разрабатываю Java-приложение для модема GPRS (Siemens TC65). Я несколько раз вызываю метод подключения HttpConnection к разным URL-адресам. Иногда он работает нормально, но иногда меня перенаправляет мой оператор (код HTTP 302). Я следую URL-адресу, указанному в заголовке Location, он возвращает 200, но это не та страница, которую я хочу.

Если я использую SIM-карту в gsm-ручке и открываю доступ через браузер, иногда происходит такое же перенаправление, но в конечном итоге я попадаю на нужную страницу. Проблема в том, что модем не выполняет Javascript, поэтому я проанализировал, что делает javascript, и процедура следующая:

страница1 -> страница2 -> страница3 -> желаемая страница

Page1 и page2 кодируют URL и параметры в кодировке base64, page3 - это .aspx. Поэтому каждый раз, когда я получаю перенаправление, я кодирую64 свой URL и отправляю на страницу .aspx, страница .aspx возвращает 302 с желаемой страницей, декодированной в заголовке Location. Он даже возвращает файл cookie с ASP.NET_SessionId, который я сохраняю и отправляю в следующем запросе.

Но даже если я сделаю все это и следую URL-адресу, возвращаемому .aspx (который совпадает с тем, с которого я начинаю), он просто начинается с самого начала, и я получаю бесконечный цикл перенаправлений.

Я могу опубликовать код, но не думаю, что у него есть какие-то проблемы, потому что он иногда работает нормально ... Проблема в том, что оператор выполняет последовательные перенаправления, а не запускает браузер.

Что я должен делать по-другому, пытаясь выполнить перенаправление с сервера aspx?

У кого-нибудь была подобная проблема? Буду очень признателен за любую помощь.

Заранее спасибо! Хьюго


person Hugo Rocha    schedule 02.04.2013    source источник
comment
Я смущен. Имеет ли значение возможность запускать JavaScript или нет? Кроме того, пробовали ли вы захватить заголовки запроса из запроса браузера, который работает, и сравнить их с HttpConnection запросом, переходящим в бесконечный цикл? Одна из возможностей (только предположение) заключается в том, что он обнюхивает User-Agent и меняет его поведение. В заголовках может быть что-то еще.   -  person Charles Forsythe    schedule 02.04.2013
comment
Извините за длинный пост, я знаю, что он выглядит запутанным. Javascript важен, потому что перенаправление со страницы 2 на страницу 3 выполняется javascript помимо кодировки base64. Поэтому я просто воспроизвел процесс в своей программе и запросил page3. Да, я проверил заголовки в браузере. Я использовал те же заголовки, по крайней мере, те, которые я считал важными. Я даже пытался использовать заголовок без преобразования, и если мой оператор выполнил это, думаю, никакой кодировки быть не должно. Пользовательский агент, который я использовал, как я полагаю, является стандартом для j2me, я получил системный профиль и конфигурацию.   -  person Hugo Rocha    schedule 03.04.2013
comment
Можете ли вы опубликовать URL-адреса этих страниц? Я предполагаю - просто догадываюсь - что могут происходить разные перенаправления, потому что сайт может подумать, что вы являетесь мобильным браузером (на основе вашего пользовательского агента). Вот почему это может быть важно, но это всего лишь предположение.   -  person Charles Forsythe    schedule 03.04.2013
comment
Да, но я также пробовал с разными пользовательскими агентами, и случилось то же самое. Также пробовал в браузере, и перенаправления в порядке. Page1 = redirect.static.kanguru.pt / Campanhas / redirect1.html Page2 = redirect.static.kanguru.pt/Campanhas/ (в Google) Page3 = redirect.kanguru.pt/RedirectKanguru/ (в Google)   -  person Hugo Rocha    schedule 03.04.2013
comment
Итак, когда я нажимаю на страницу 3 в своем браузере, я перехожу в Google. Является ли page3 страницей, создающей бесконечный цикл?   -  person Charles Forsythe    schedule 03.04.2013
comment
Да, после page3 я получаю 302 с URL-адресом, в данном случае google, но если я попытался установить соединение с google после этого, меня снова перенаправили на page1. Забавно то, что в браузере, если я захожу только на страницу 3, это работает, но в модеме этого не происходит, я должен запрашивать три страницы в правильной последовательности. Спасибо за вашу помощь, я новичок в публикации в stackoverflow, могу ли я дать вам репутацию?   -  person Hugo Rocha    schedule 03.04.2013


Ответы (1)


Мне удалось заставить это работать.

Я заменял javascript на page2 своим собственным кодом в моей программе, поскольку модем не может запускать javascript. И использовал результат и отправил его на page3. Это нормально, но на самом деле я не отправлял HTTP-запрос на page2.

Если я запрашиваю три страницы в правильной последовательности, реплицируя функции, которые javascript выполнял в моем собственном коде, и сохраняю файлы cookie, после page3 я получаю перенаправление на желаемую веб-страницу и больше не перенаправляю, как это было раньше. Я подумал, раз уж я сделал все, что делал page2, мне действительно не нужно было делать запрос, и я просто перешел на page3. Но по какой-то причине я это делаю, я не знаю почему, возможно, сеанс asp действительно начинается на этой странице и не отображается в исходном коде страницы, или сервер отслеживает запрос страницы. И я даже не понимал, зачем оператору это делать, я думаю, это может даже нарушить HTTP-соединения со старых мобильных телефонов, потому что на самом деле он не предназначен для устройств, которые не могут запускать javascript.

В следующий раз я просто воспользуюсь другим оператором = p

Спасибо Чарльзу Форсайту за советы и помощь.

person Hugo Rocha    schedule 03.04.2013