Помогите пожалуста с Java SE

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by -Girt@b_, 23 Feb 2010.

  1. -Girt@b_

    -Girt@b_ New Member

    Joined:
    16 Feb 2010
    Messages:
    9
    Likes Received:
    0
    Reputations:
    0
    Пишу программу для изменения пароля от учетной записи ICQ. Проблема с коннектом на сервер... вот исходничек коннекта к учетной записи...

    URL urlLogin = new URL("https://www.icq.com/karma/login_page.php");
    URLConnection loginConnection = urlLogin.openConnection();
    loginConnection.setDoInput(true);
    loginConnection.setDoOutput(true);
    logTextPane.setText(logTextPane.getText() + "Connecting to icq.com... OK\n");
    PrintWriter out = new PrintWriter(loginConnection.getOutputStream());
    out.print("uin_email=" + URLEncoder.encode(icqSNField.getText()) + "&password=" + URLEncoder.encode(passwordField.getText()));
    out.close();
    BufferedReader in = new BufferedReader(new InputStreamReader(loginConnection.getInputStream()));
    StringBuffer respponse = new StringBuffer();
    String line;
    while((line = in.readLine()) != null){
    respponse.append(line + "\n");
    }
    System.out.println(respponse.toString());
    in.close();

    По ответу параметры логина и пароля вроде бы передаются, но не чего не происходит:(
    Помогите пожалуйста мне сегодня проект этот надо отослать на проверку.
     
    #1 -Girt@b_, 23 Feb 2010
    Last edited: 23 Feb 2010
  2. -Girt@b_

    -Girt@b_ New Member

    Joined:
    16 Feb 2010
    Messages:
    9
    Likes Received:
    0
    Reputations:
    0
    Блин ну неужели никто не знает как отсылать POST запросы в Java SE???
     
  3. SpiderWEB

    SpiderWEB New Member

    Joined:
    21 Dec 2009
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    Попробуй вместо URLConnection HttpsURLConnection.
    У него есть метод setRequestMethod("POST").
    И еще мне кажется URLEncoder ты неправильно используешь...
     
  4. -Girt@b_

    -Girt@b_ New Member

    Joined:
    16 Feb 2010
    Messages:
    9
    Likes Received:
    0
    Reputations:
    0
    4-3"><input type="text" name="uin_email" value="" class="d1-4-input" onkeydown="uin_field_change()"></div>
    <div class="d1-4-4"><input type="password" name="password" class="d1-4-input" maxlength="32"></div>

    интересно каким макаром тут может получаться пароль??? и как его передать ПОСТом??
     
  5. SpiderWEB

    SpiderWEB New Member

    Joined:
    21 Dec 2009
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    ха.... слишком мало ты смотришь.
    Code:
    <form name="login" id="login_frm" action="https://www.icq.com/karma/login.php" method="post" onsubmit="return check();">
    	<div class="d1-3">Чтобы продолжить, пожалуйста, войдите в систему:</div>
    		<div class="d1-4">
    			<input type="hidden" name="dest" value="http://www.icq.com">
    			<input type="hidden" name="service" value="30">
    			<input type="hidden" name="icq_ln" value="6569E408CBECB37FC2FE44A99719A0BE8AA9C1067A59D325DF85095EE04C981F">
    			<div class="d1-4-1">Номер ICQ или E-mail</div>
    			<div class="d1-4-2">Пароль ICQ</div>
    			<div class="d1-4-3"><input type="text" name="uin_email" value="" class="d1-4-input" onkeydown="uin_field_change()"></div>
    			<div class="d1-4-4"><input type="password" name="password" class="d1-4-input" maxlength="32"></div>
    			<div class="d1-4-5">
    					<div>
    						<div class="but-3" name="next" title="Войти" onclick="submit_login();">
    							<img src="img/icon_l.gif" width="20" height="29" alt="">
    						</div>
    						<div class="but-1" name="next_btn" id="next_btn" title="Войти" onclick="submit_login();">
    							<div>Войти</div>
    						</div>
    						<div class="but-2" name="next" title="Войти">
    							<input type="image" src="img/corner_r.gif" width="6" height="29" alt="">
    						</div>
    					</div>
    					
    				</div>
    				<div class="d1-4-6">
    					<input type="checkbox" class="d1-4-chk" id="rem" name="rem" value="1"><span class="d1-4-rem" onclick="remember_me_check()">&nbsp;Запомнить меня</span>
    					&nbsp;<img src="img/info.gif" title="Справка" class="d1-4-img" alt="" border="0" width="14" height="14" onclick="window.open('http://www.icq.com/legal/legal_popup_message_ru.html',null,'height=200,width=600,status=no,toolbar=no,menubar=no,location=no,resizable=no')">
    				</div>
    		</div>
    		</form>
    все инпуты что есть в форме нужно отправлять, а не только логин пароль.
     
  6. -Girt@b_

    -Girt@b_ New Member

    Joined:
    16 Feb 2010
    Messages:
    9
    Likes Received:
    0
    Reputations:
    0
    Я видел этот код... наизусть его уже знаю. там в общем передается шесть параметров:
    uin_email - логин
    password - пароль, как он передается я хз...
    dest - http://www.icq.com/support/change_password/?icid=nav_pw КОНСТАНТА
    service - 30 КОНСТАНТА
    icq_ln - что сюда передовать я не много не могу понять... по началу думал КУКС, но нет...
    rem - 1 КОНСТАНТ если не надо запоминать данные
    передаю все параметры... глухо:(
     
    #6 -Girt@b_, 23 Feb 2010
    Last edited: 23 Feb 2010
  7. SpiderWEB

    SpiderWEB New Member

    Joined:
    21 Dec 2009
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    Code:
    <input type="hidden" name="icq_ln" value="6569E408CBECB37FC2FE44A99719A0BE8AA9C1067A59D325DF  85095EE04C981F">
    вот то что в value, то и надо передавать. А для этого сначала тебе нужно в гет запросе получить html код страницы, выдернуть оттуда это валью и слать пост запрос.
     
  8. -Girt@b_

    -Girt@b_ New Member

    Joined:
    16 Feb 2010
    Messages:
    9
    Likes Received:
    0
    Reputations:
    0
    угу... ок попробую. а что касается пароля... как его передавать? точно также?
     
  9. SpiderWEB

    SpiderWEB New Member

    Joined:
    21 Dec 2009
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
  10. -Girt@b_

    -Girt@b_ New Member

    Joined:
    16 Feb 2010
    Messages:
    9
    Likes Received:
    0
    Reputations:
    0
    Ну сейчас попробую переписать код... посмотрю что из этого получиться
     
  11. -Girt@b_

    -Girt@b_ New Member

    Joined:
    16 Feb 2010
    Messages:
    9
    Likes Received:
    0
    Reputations:
    0
    Code:
    public static void main(String[] args) {
           Start testPostRequest = new Start();
           //создаём лист параметров для запроса
           java.util.List<String[]> params = new LinkedList<String[]>();
           params.add(new String[]{"uin_email", "***"});
           params.add(new String[]{"password", "***"});
           params.add(new String[]{"dest", "http://www.icq.com/support/change_password/?icid=nav_pw"});
           params.add(new String[]{"service", "30"});
           params.add(new String[]{"icq_ln", "9BCB804B320E26F8D19B640A8A70950B52043FB82B44DF2CE5CDF3E2D1284D9D"});
           params.add(new String[]{"rem", "1"});
           //будем использовать прокси
           testPostRequest.useProxy = true;
           testPostRequest.proxyAdress = "221.238.17.245";
           testPostRequest.proxyPort = 8080;
           try {
               //отправляем запрос на страницу логина http://vkontakte.ru
               System.out.println(testPostRequest.sendPostRequest("https://www.icq.com/karma/login_page.php", params));
           } catch (IOException e) {
               e.printStackTrace();
           }
       }
    
    Код функции отправки данных
    Code:
    private String sendPostRequest(String urlLocation, java.util.List parameters) throws IOException {
           StringBuffer result = new StringBuffer();
           HttpURLConnection connection = getConnection(urlLocation);
           System.out.println("Соединение с " + urlLocation + " установлено.");
    
           connection.setRequestMethod("POST");
           connection.setRequestProperty("Referer", urlLocation);
           connection.setRequestProperty("Cookie", "your cookies may be here");
           String data = "";
           if (parameters != null) {
               for (int i = 0; i < parameters.size(); i++) {
                   String param[] = (String[]) parameters.get(i);
                   if (i != 0) {
                       data = data + "&";
                   }
                   data = data + param[0] + "=" + URLEncoder.encode(param[1], "UTF-8");
               }
    
           }
           if (parameters != null && data.length() != 0) {
               connection.setRequestProperty("Content-Length", Integer.toString(data.length()));
           }
           connection.connect();
    
            
    
           if (parameters != null && data.length() != 0) {
               System.out.println("Отправка данных..");
               PrintWriter out = new PrintWriter(connection.getOutputStream());
               out.write(data);
               out.flush();
               System.out.println("Получение ответа от сервера..");
           }
           result.append("response code: ").append(connection.getResponseCode()).append("\n");
           result.append("response cookies: ").append(getResponseCookies(connection)).append("\n");
           result.append("response page source: ").append("\n");
           
    
           BufferedReader rd = new BufferedReader(new InputStreamReader(connection.getInputStream()));
           String line;
           while ((line = rd.readLine()) != null) {
               result.append(line).append("\n");
           }
           
           connection.disconnect();
           return result.toString();
       }
    
    Не могу считать страницу изначально в одном коннекте... выбивает исключение:( Если два коннекта, то значения разные:(
    Код считывания не вставлял.

    Пробовал скрипт для подключения к КОНТАКТУ - все норм вроде...
     
  12. SpiderWEB

    SpiderWEB New Member

    Joined:
    21 Dec 2009
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    в одном коннекте и не получится. для каждого запроса свой коннект. и почему http а не https. И судя по тому что ты привел у тебя шлется только пост... а icq_ln ты руками вписываешь, а не считываешь со страницы.
     
  13. -Girt@b_

    -Girt@b_ New Member

    Joined:
    16 Feb 2010
    Messages:
    9
    Likes Received:
    0
    Reputations:
    0
    Я помоему написал что код считывания не вставлял ибо при двойном коннекте значения совершенно разные получаются.
     
  14. -Girt@b_

    -Girt@b_ New Member

    Joined:
    16 Feb 2010
    Messages:
    9
    Likes Received:
    0
    Reputations:
    0
    Как я могу предположить тут единственное решение - открыть коннект, пословно про сканировать содержимое исходного текста страницы, поиском найти данное значение, сохранить его в переменную и тут же передать пост запросом...
    Может у кого то др вариант есть?
     
  15. SpiderWEB

    SpiderWEB New Member

    Joined:
    21 Dec 2009
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    блин я в 7 посте тебе это и написал. Тут других вариантов нет. Как ты в браузере сначала заходишь на страницу, потом заполняешь поля форм и отправляешь, так же и в программе. И добавь еще заголовок User-Agent, браузер какой-нибуть. А то по умолчанию ява туда свою версию пишет и может сервак фильтрует их.
     
Loading...
Similar Threads - Помогите пожалуста Java
  1. b3
    Replies:
    4
    Views:
    3,207