Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Socket, пустой ответ 
V
    Опции темы
Feldsher
Дата 7.4.2011, 23:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 110
Регистрация: 14.3.2006

Репутация: нет
Всего: нет



Ребята, помогите, пожалуйста, решить проблему - при запросе страницы сайита после завершённой авторизации получаю пустой ответ.

Ответ на запрос авторизации:
Код
HTTP/1.1 302 Found
Server: nginx
Date: Thu, 07 Apr 2011 14:44:09 GMT
Content-Type: text/html; charset=windows-1251
Set-Cookie: a=f63bb51c7248ed122; expires=Thu, 07-Apr-2011 12:59:11 GMT; path=/; domain=site.com
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cach
location: /user/Feldsher
Set-Cookie: b=70a0a51c7248ebd12; expires=Thu, 07-Apr-2011 12:59:11 GMT; path=/; domain=.site.com
Set-Cookie: c=783bbec2375335e70; expires=Thu, 07-Apr-2011 12:59:11 GMT; path=/; domain=.site.com
Transfer-Encoding: chunked
Connection: keep-alive


Его разбор провожу так:

Код
HashMap <String,String>   cookies=new HashMap<String,String>();
BufferedReader reader=new BufferedReader(new InputStreamReader(siteSocket.getInputStream()));
String ln="";
while ((ln = reader.readLine()) != null) {
     if (ln.startsWith("location: ")) {
          location=ln.substring("location: ".length());//получаю /user/Feldsher
     }
     if(ln.startsWith("Set-Cookie: ")) {
          String ln1 = ln.substring("Set-Cookie: ".length());
          StringTokenizer st = new StringTokenizer(ln1, ";", false);
          while (st.hasMoreTokens()) {
          String chunk = st.nextToken();
      if (chunk.startsWith(" path")
                   || chunk.startsWith(" expires")
                   || chunk.startsWith(" domain"))
                             continue;
     StringTokenizer st2 = new StringTokenizer(chunk, "=");
         while (st2.hasMoreTokens()) {
                  String nameCookie = st2.nextToken();
                  String valueCookie = st2.nextToken();
                  cookies.put(nameCookie, valueCookie);
     }
   }
}


Новую страницу запрашиваю так:

Код

to.write("GET "+location+" HTTP/1.1\r\n");
to.write("Host: site.com\r\n");
to.write("Keep-Alive: 300\r\n");
Iterator cookiesIterator=cookies.entrySet().iterator();
String cookie="Cookie: ";
while(cookiesIterator.hasNext()){
     Entry cookieTemp=cookiesIterator.next();
     cookie+=cookieTemp.getKey()+"="+cookieTemp.getValue);
}
to.write(cookie+"\r\n");
to.write("Connection: keep-alive\r\n");
to.write("User-Agent: java/socket\r\n");
to.write("Accept: */*");
to.write("\r\n");
to.flush();
reader=new BufferedReader(new InputStreamReader(siteSocket.getInputStream()));
while ((ln = reader.readLine()) != null) {
     Sysem.out.println(ln);
}


В итоге в reader-e  абсолютно нет информации.

Заранее спасибо.

Это сообщение отредактировал(а) Feldsher - 7.4.2011, 23:56
PM MAIL   Вверх
LSD
Дата 8.4.2011, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 19
Всего: 538



А зачем эта вся ручная работа с HTTP? Может стоит использовать, что нибудь типа HttpClient?


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Feldsher
Дата 8.4.2011, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 110
Регистрация: 14.3.2006

Репутация: нет
Всего: нет



Я сам за вариант с компонентами..
Но ЛПР скомандовал делать сокетами.

PM MAIL   Вверх
LSD
Дата 8.4.2011, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 19
Всего: 538



Ты похоже неправильно формируешь параметр Cookie: он должен иметь вид:
Код

Cookie: name=value; name2=value2

а у тебя куки не разделяются ничем.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Skipy
Дата 11.4.2011, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 487
Регистрация: 24.8.2006
Где: Москва, Россия

Репутация: 4
Всего: 16



Цитата(LSD @ 8.4.2011,  15:07)
Ты похоже неправильно формируешь параметр Cookie: он должен иметь вид:
Код

Cookie: name=value; name2=value2

а у тебя куки не разделяются ничем.

Вообще-то куки, если их несколько, должны идти каждая на своей строке:

Код

        Cookie: $Version="1";
                Customer="WILE_E_COYOTE"; $Path="/acme";
                Part_Number="Rocket_Launcher_0001"; $Path="/acme";
                Shipping="FedEx"; $Path="/acme"


А ';' - это разделитель полей в одной куке. В общем, посмотрите вот тут пример 4.1: http://www.ietf.org/rfc/rfc2965.txt


--------------------
С уважением,
Евгений aka Skipy
www.skipy.ru
PM MAIL WWW ICQ   Вверх
LSD
Дата 11.4.2011, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 19
Всего: 538



Цитата(Skipy @  11.4.2011,  15:52 Найти цитируемый пост)
А ';' - это разделитель полей в одной куке. В общем, посмотрите вот тут пример 4.1: http://www.ietf.org/rfc/rfc2965.txt

Вот только по факту, тот же Хром каждое такое поле трактует как отдельную куку. Со своими path, expire и т.д.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Feldsher
Дата 20.4.2011, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 110
Регистрация: 14.3.2006

Репутация: нет
Всего: нет



Спасибо.
PM MAIL   Вверх
Skipy
Дата 21.4.2011, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 487
Регистрация: 24.8.2006
Где: Москва, Россия

Репутация: 4
Всего: 16



[QUOTE=LSD,11.4.2011,  16:42]
Цитата(Skipy @  11.4.2011,  15:52 Найти цитируемый пост)
А ';' - это Вот только по факту, тот же Хром каждое такое поле трактует как отдельную куку. Со своими path, expire и т.д.

Вот поэтому я его и не использую. smile


--------------------
С уважением,
Евгений aka Skipy
www.skipy.ru
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Работа с сетью | Следующая тема »


 




[ Время генерации скрипта: 0.0516 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.