powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Изменение информации на сайте
10 сообщений из 10, страница 1 из 1
Изменение информации на сайте
    #37605106
bublk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
package p1;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.commons.httpclient.*;
//import org.apache.commons.httpclient.cookie.CookiePolicy;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.params.CookiePolicy;
import org.apache.http.cookie.CookieSpecRegistry;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
/**
 *
 *
 */
public class HTTPClient {

    /**
     * @param args the command line arguments
     */
   public static void main(String[] args) {
        try {
        	

            HttpClient client = new HttpClient ();
            client.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);
            
            PostMethod post = new PostMethod("http://www.sharewareriver.com/login.php");
            post.addParameter("login", "xxx");
            post.addParameter("pword", "fxxx");
            post.addParameter("dopost", "1");
            client.executeMethod( post );
                        
            Cookie[] cookies = client.getState().getCookies();
            for (Cookie cookie : client.getState().getCookies()) {
            	System.out.println( cookie );
            }
            URL url = new URL("http://www.sharewareriver.com/account.php");// вот тут вся проблема
            BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()));
            String line;
            String ss = "http://www.sharewareriver.com/editp.php?edit=";
            int n = ss.length();
            GetURL one = new GetURL();// класс обработки ссылки
            while ((line = reader.readLine()) != null) {
            	boolean good = false;
            	int m = line.length();
        		for(int i = 0;i<m;i++){
        			String s = "";
        			if(n+i<m){
        				s = line.substring(i,n+i);
        			} else {
        				break;
        			}
        			good = s.equals(ss);
        			if(good){
        				System.out.println("*");
        				break;
        			}
        		}
        		System.out.println(line);
        		if(good){
        			one.setURL(line);
        			one.Start();
        			line = one.getURL();
        			PostMethod post2 = new PostMethod(line);
                    post2.addParameter("download_url", "xxx");
                    post2.addParameter("order_url", "xxx);
                    client.executeMethod( post2 );
        		}
                
            }
            reader.close();
        } catch (HttpException ex) {
            Logger.getLogger(HTTPClient.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(HTTPClient.class.getName()).log(Level.SEVERE, null, ex);
        }
        
   }} 


суть софта - авторизация на сайте, и изменение инфы в профиле
с авторизацией проблем нет.
Но после нее нужно перейти в профиль, и изменить там некоторые поля,
но при переходе кук теряется, тоесть перейти по адресу нельзя.
Подскажите, в чем проблема?
...
Рейтинг: 0 / 0
Изменение информации на сайте
    #37605108
svenom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну так вы понимаете, что делаете? В одном месте лезете на сайт через HttpClient, а в другом - через URLConnection. Само собой, во втором случае ничего не передается:
Код: java
1.
2.
URL url = new URL("http://www.sharewareriver.com/account.php");// тут нет проблемы
BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream())); // а тут есть

Как url.openStream() должен понять, что в заголовок запроса должна быть вставлена кука?
...
Рейтинг: 0 / 0
Изменение информации на сайте
    #37605148
bublk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
это я понял.
Не подскажите, как через httpclient получить содержимое страницы?
Именно содержимое, тоесть html код
...
Рейтинг: 0 / 0
Изменение информации на сайте
    #37605222
bublk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: java
1.
2.
3.
4.
5.
            DefaultHttpClient httpclient = new DefaultHttpClient();
            HttpGet httpget = new HttpGet("http://www.sharewareriver.com/account.php");
            HttpResponse response = httpclient.execute(httpget);
            HttpEntity entity = response.getEntity();
            System.out.println(EntityUtils.toString(entity));


Добавил этот код, содержимое получаю, но это все равно не то.
Чем отличается DefaultHttpClient() от HttpClient() ? В этом вся проблема
...
Рейтинг: 0 / 0
Изменение информации на сайте
    #37605236
Большой Синий Кит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bublk,

У вас судя по всему мешанина библиотек.
PostMethod - из commons-httpclient 3.x
HttpGet - httpcomponents.httpclient 4.x

Определитесь вначале что вы использовать хотите.
...
Рейтинг: 0 / 0
Изменение информации на сайте
    #37605251
svenom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что бы не тыкать пальцем в небо, вам надо понять основы, основы HTTP.
HTTP это stateless протокол, т.е. протокол, который НЕ ПОДДЕРЖИВАЕТ сохранения состояния между запросами. Соответственно для того, что бы его поддреживать идут на всякие ухищрения - сессии, скрытые теги и т.д..
Первое, что вам надо понять - каким образом происходит сохранение состояния после авторизации. Наиболее распространенный вариант это сессии. Т.е. вы аутентифицируетесь, для вас открывается сессия, у сессии есть уникальный идентификатор. Сервера вам выдает этот идентификатор, что бы ваш последующий запрос мог быть сопоставлен с этой сессией.
Как можно вренуть клиенту идентификатор сессии? Два наиболее распространенных варианта - либо через параметр в URL, либо через куку. Чаще используется кука.
Далее, что такое кука? Кука это обычный заголовок, прикрепленный к запросу или респонсу.
Поэтому вам надо сделать следующее:
1) В обязательном порядке поставить себе HTTP сниффер. Наиболее популярные - TCPMon или Fiddler2. С помозью них вы сможете увидеть сырые запросы, которые отправляются на сервер и обратно.
2) Как только поставили сниффер, отправляете POST запрос с авторизацией, получаете ответ, через сниффер анализируете, что там пришло в ответе. Ваша цель - найти идентификатор сессии. С вероятностью 99% он будет в куке (т.е. в одном из заголовков), либо же где-то в теле ответа.
3) После этого вам надо понять, как передать номер сессии обратно серверу. Для этого, либо делаете новый GET запрос с прикрепленной кукой и убеждаетесь через сниффер, что она действительно прикрепилась. Либо же (маловероятно) передаете его в качестве одного из параметров GET запроса. После отправки убеждаетесь с помощью сниффера, что от сервера пришел нормальный ответ, а не 403.
Все.
В технических деталях того или иного API для работы с HTTP (будь это сырой URLConnection или Apache Commons) разбирайтесь уже сами. Если будете понимать основы HTTP взаимодействия, разобраться в конкретном API - дело 20 минут.
...
Рейтинг: 0 / 0
Изменение информации на сайте
    #37605325
Большой Синий Кит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svenom,

Да достаточно, я думаю, будет firebug под firefox. Просто удобно ведь.
...
Рейтинг: 0 / 0
Изменение информации на сайте
    #37605534
bublk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ок, разобрался.
К GET запросам должна прикреплятся кука.
Но еще сохраняется кук от u4471.86.spylog.com
я так думаю она не нужна.
...
Рейтинг: 0 / 0
Изменение информации на сайте
    #37605640
bublk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще вопрос
Есть /editp.php, для редактирования инфы.
Ему я POST запросом передаю нужные значения, по выводу видно что нужные значения поменялись.
Но в /editp.php?id=.. есть кнопка "submit", по нажатию которой данные передаются POST запросом к editp.php
Но изменения не сохраняются
...
Рейтинг: 0 / 0
Изменение информации на сайте
    #37605901
bublk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все разобрался. Несколько полей передавались не в той кодировке
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Изменение информации на сайте
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]