Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.06.2010, 17:41   #1
Pliks
Пользователь
 
Регистрация: 20.11.2009
Сообщений: 46
По умолчанию Авторизация на сайте.

Здравствуйте. Мучаюсь вот который день с НТТР. Весь интернет носом перерыл и ничего конкретного не нашел. Толи куки не так использую, толи кодировка строки ответа серверу не та, толи сама строка неверного формата, толи отправляю я её коряво, толи сам корявый…
public InputStream is = null;
public OutputStream os = null;
public StringBuffer sb = null;
public HttpConnection his = null;
public int ch = 0;

public String PHPSESSID = "";
public String User_Agent = "";
Код:
Метод:
User_Agent = ("Profile/"+System.getProperty("microedition.profiles")+" ");
User_Agent+="Configuration/"+System.getProperty("microedition.configuration");

Try
{
his = (HttpConnection)Connector.open ("http://m.spishy.ru/cabinetpda.php");
}
catch (IOException e) {e.printStackTrace();}
		
		
		//==================================================================
		try
		{
			his.setRequestMethod("POST");
			his.setRequestProperty("Connection", "keep-alive");
			his.setRequestProperty("User-Agent", User_Agent);
			his.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
			his.setRequestProperty("referer", "/authorisepda.php");
			his.setRequestProperty("login", "MyLogin");
			his.setRequestProperty("pass", "MyPassword");
			his.setRequestProperty("submit", "submit");
		}catch (IOException e1) {e1.printStackTrace();}
		//==================================================================
		try
		{
			System.out.println("Response Code: " + his.getResponseCode());
			System.out.println("Response Msg: " + his.getResponseMessage());
		}catch (IOException e2) {e2.printStackTrace();}
		//==================================================================
		try
		{
			System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
			for(int i=0; i < 10; i++) System.out.println(his.getHeaderFieldKey(i)+
				": "+his.getHeaderField(i));
			System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
			
			is = his.openInputStream();
			sb = new StringBuffer();
			while((ch = is.read()) > -1) {sb.append((char)ch);}
			System.out.println(sb);
			
			
			
			StringBuffer sb2 = new StringBuffer();
			boolean bool = false;
			boolean bool2 = true;
			
			while((ch = is.read()) > -1)
			{
				sb.append((char)ch);
				
                        /* Этот код применяю для вычисления значения 
                         * переменной PHPSESSID */
				if(bool2)
				{
					if(bool)
					{
						StringBuffer sb3 = new StringBuffer();
						sb3.append((char)ch);
						if(sb3.toString().equals("\""))
						{
							bool2 = false;
							PHPSESSID = sb2.toString();
							System.out.println("PHPSESSID: " + PHPSESSID);
						}
						else{sb2.append((char)ch);}
					}
					else
					{
						if(sb2.length() < "PHPSESSID\" value=\"".length())
						{sb2.append((char)ch);}
						else{sb2.deleteCharAt(0);sb2.append((char)ch);}
						if(sb2.toString().equals("PHPSESSID\" value=\""))
						{
							sb2 = new StringBuffer(); bool = true;
						}
					}
				}
			}
			
			
			
			
			os = his.openOutputStream();
			byte bytus[] = ("/cabinetpda.php?" + his.getHeaderField(7) + 
					"&PHPSESSID=" + PHPSESSID + "&login=MyLogin&pass=MyPassword").getBytes();
			for(int i = 0; i < bytus.length; i++){os.write(bytus[i]);}
			os.flush();
			
			System.out.println("Response Code: " + his.getResponseCode());
			System.out.println("Response Msg: " + his.getResponseMessage());


	System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
			for(int i=0; i < 10; i++) System.out.println(his.getHeaderFieldKey(i)+
				": " + his.getHeaderField(i));
			System.out.println(his.getURL());
			System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
			
			
			String str = his.getHeaderFieldKey(7);
			String str2 = his.getHeaderField(7);
			
			is.close();
			os.close();
			his.close();
			
			
			//Затем сразу пытаюсь с куками получить новую страницу:

			his = (HttpConnection)Connector.open
					("http://m.spishy.ru/cabinetpda.php");

			
			his.setRequestMethod("POST");
			his.setRequestProperty("Connection", "keep-alive");
			his.setRequestProperty("User-Agent", User_Agent);
			his.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
			his.setRequestProperty(str, str2);
			his.setRequestProperty("PHPSESSID", PHPSESSID);
			
			
			sb = new StringBuffer();
			is = his.openInputStream();
			while((ch = is.read()) > -1) {sb.append((char)ch);}
			System.out.println(sb);
			//На выходе та же самая страница.
			
			
			is.close();
			his.close();
		}catch (IOException e3) {e3.printStackTrace();}
		//==================================================================
Пробовал по-разному, ничего не подходит. Как правильно оформить запрос на авторизацию и загрузить последующую страницу? Помогите, пожалуйста…
Runtime.getRuntime().gc() ява - один из самых чистых языков.
Pliks вне форума Ответить с цитированием
Старый 07.06.2010, 19:48   #2
Виталий Желтяков
Старожил
 
Аватар для Виталий Желтяков
 
Регистрация: 19.04.2010
Сообщений: 2,702
По умолчанию

А куки при следующем запросе не теряются? Что пишет парсер?
Виталий Желтяков вне форума Ответить с цитированием
Старый 07.06.2010, 19:57   #3
Pliks
Пользователь
 
Регистрация: 20.11.2009
Сообщений: 46
По умолчанию

Куки сохраняются. PHPSESSID меняется. А парсер это что?
Runtime.getRuntime().gc() ява - один из самых чистых языков.
Pliks вне форума Ответить с цитированием
Старый 08.06.2010, 08:47   #4
Pliks
Пользователь
 
Регистрация: 20.11.2009
Сообщений: 46
По умолчанию

Я так понимаю кодировка в порядке, раз куки в порядке.
Runtime.getRuntime().gc() ява - один из самых чистых языков.

Последний раз редактировалось Pliks; 08.06.2010 в 12:19.
Pliks вне форума Ответить с цитированием
Старый 08.06.2010, 12:34   #5
Виталий Желтяков
Старожил
 
Аватар для Виталий Желтяков
 
Регистрация: 19.04.2010
Сообщений: 2,702
По умолчанию

Цитата:
Сообщение от Pliks Посмотреть сообщение
Куки сохраняются. PHPSESSID меняется. А парсер это что?
Насколько Я понимаю - это и есть Ваша ошибка. Куки не цепляются ко второму соединению и оно проходит как будто Вы не авторизованны.
Парсер - это программа для анализа обмена данных между клиентом и сервером. Советую Вам наити такую.
Виталий Желтяков вне форума Ответить с цитированием
Старый 08.06.2010, 13:51   #6
Pliks
Пользователь
 
Регистрация: 20.11.2009
Сообщений: 46
По умолчанию

Хорошо, спасибо. Теперь с парсером попробую. Еще про пхп почитаю побольше.
Runtime.getRuntime().gc() ява - один из самых чистых языков.
Pliks вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Авторизация на сайте doniyor Работа с сетью в Delphi 1 18.04.2010 13:54
Авторизация на сайте Kengie Помощь студентам 2 23.03.2010 21:28
Авторизация на сайте Niklan Общие вопросы Delphi 1 07.11.2009 00:39
Авторизация на сайте MultiBit Работа с сетью в Delphi 6 13.03.2009 18:45
Авторизация на сайте vladimirzzz Работа с сетью в Delphi 7 28.09.2008 21:59