Twoje PC  
Zarejestruj się na Twoje PC
TwojePC.pl | PC | Komputery, nowe technologie, recenzje, testy
B O A R D
   » Board
 » Zadaj pytanie
 » Archiwum
 » Szukaj
 » Stylizacja

 
M E N U
  0
 » Nowości
0
 » Archiwum
0
 » Recenzje / Testy
0
 » Board
0
 » Rejestracja
0
0
 
Szukaj @ TwojePC
 

w Newsach i na Boardzie
 
OBECNI NA TPC
 
 » Shark20 03:39
 » Visar 03:00
 » Chavez 02:46
 » yanix 02:26
 » PaKu 02:20
 » metacom 02:18
 » xpx 02:17
 » abes99 01:30
 » luckyluc 01:30
 » Chrisu 01:26
 » PiotrexP 01:18
 » Martens 00:57
 » Wolf 00:44
 » CiAsTeK 00:39
 » bmiluch 00:38
 » Zic 00:36
 » rulezDC 00:36
 » Demo 00:15
 » rarek 00:09
 » buddookan 00:03

 Dzisiaj przeczytano
 41105 postów,
 wczoraj 25974

 Szybkie ładowanie
 jest:
włączone.

 
ccc
TwojePC.pl © 2001 - 2024
A R C H I W A L N A   W I A D O M O Ś Ć
    

[JAVA] URLConnection i cookies - jak to ugryźć? , bwana 8/03/12 02:51
Problem mam następujący - chcę odczytać stronę (GET), przeczytać cookies, ustawić cookies i wysłać stronę (POST). W jedną stronę to działa, z odczytem otrzymanych cookies też nie mam problemów. Problem mam taki:

1. Kiedy przeczytam stronę (GET) i poznam wartości cookies, próbuję ustawić metodę na POST - dostaję wyjątek "Already connected" (w zasadzie przy każdej próbie użycia metod setRequestXXX())

2. Kiedy próbuję pominąć ustawianie cookies (czy czegokolwiek metodami setRequestXXX()) i wysyłam robię POST, dostaję komunikat, że nie mogę pisać do połączenia skoro już z niego czytałem.

Chodzi o to by móc programować serie operacji GET, POST, GET, POST na jednym połączeniu bez rozłączania go, tak by w międzyczasie używac setRequestProperty() i setRequestMethod(). Jak to do diaska zrobić i błagam, nie na socketach.

Pomożecie?

"you don't need your smile when I cut
your throat"

  1. Dodam, że w Perlu zajęło mi to (LWP::UserAgent) z pół godziny (wcześniej tego nie robiłem , bwana 8/03/12 03:00
    ani w Perlu ani w ogóle), tylko że pierdoła jeden ma zrypaną obsługę wątków. Żeby nie było tajemnicy jakiejś - chcę uzyskać program, który:

    a) sprawdzi czy dany serwer proxy żyje, czy nie
    b) sprawdzi czy dany serwer proxy jest anonimowy, czy nie

    Metoda jest prosta:

    a) łączenie z popularny serwisem bez proxy - jeśli działa, to z tym samym serwisem przez proxy - jeśli też działa, to znaczy że proxy żyje
    b) jak wyżej, ale zamiast popularnego serwisu jest serwis typu "what's my ip" - jeśli bez proxy pokazany przez serwis adres IP jest różny niż przy proxy - proxy jest anonimowy

    No i wiadomo, chcę to puścić w wątkach. Po nic, w rozmowie w pracy powstało zagadnienie, dyskusja, napięcie rosło no i muszę chłopakom pokazać, że ten pomysł ma sens w praktyce:-D No a jeśli już jest know-how, pomysł i idea, to chcę sobie zrobić jako wprawkę normalne narzędzie które stabilnie działa. No zawziąłem się, nie będzie Java pluć mi w twarz:-D

    "you don't need your smile when I cut
    your throat"

  2. Nocna pora to człowiek bzdury pisze. Miałem zapytać o to jaką wybrać zmywarkę , bwana 8/03/12 08:37
    ...

    "you don't need your smile when I cut
    your throat"

    1. [PRYWATA] Przy okazji - czy ktoś może mi dać , bwana 8/03/12 08:38
      odpowiedź na zadane pytanie?:-D

      "you don't need your smile when I cut
      your throat"

    2. mam Boscha, , Tummi 8/03/12 08:51
      ale to nieistotne ;) Watek b. dobry :D

      T.

      www.skocz.pl/uptime :D

      1. Hieronima? , bwana 8/03/12 08:56
        :-D

        "you don't need your smile when I cut
        your throat"

    3. mam Boscha , Grocal 8/03/12 09:01
      A co do meritum, to chętnie bym pomógł, ale z Javą miałem ostatni raz do czynienia na magisterce i 2 miesiące po studiach (staż w jakiejś firmie). Generalnie a) czytaj dokumentację b) kombinuj c) sprawdź czy w ramach jednego połączenia nie trzeba przestawiać jakiejś flagi, żeby traktować URLConnection do czytania (GET) lub zapisu (POST). To tylko sugestia.

      Na pewno, na razie, w ogóle...
      Naprawdę, naprzeciwko, stąd...
      Ortografia nie gryzie!

      1. :-D , bwana 8/03/12 09:14
        ogólnie to trzeba ustawić "flagę" - setRequestMethod - tylko po jakimkolwiek zapisie/odczycie nie można tego zrobić ponownie.

        Dokumentacja jest do bani w tym przypadku. Nie ma w niej nawet istniejącego konstruktora do URL który pozwala na uzyskanie połączenia z proxy, jest tylko opisany konstruktor przyjmujący URI. Ten drugi (URL(protocol, proxyhost, proxyport, targethost)) znalazłem przypadkiem czytając blogi programistów.

        "you don't need your smile when I cut
        your throat"

  3. cycki cycki cycki , bwana 8/03/12 08:44
    http://img96.imageshack.us/...vegatitsshoweran.gif

    "you don't need your smile when I cut
    your throat"

  4. (Prawie ;) Pierwsza linia javadoca , Quad 8/03/12 10:17
    Each HttpURLConnection instance is used to make a single request but the underlying network connection to the HTTP server may be transparently shared by other instances.

    Cos wiecej bym Ci napisal ale sporo roboty teraz mam :\

    1. Kontynuujac, , Quad 8/03/12 10:19
      jak potrzebujesz czegos bardziej zlozonego to pewnie Apache HttpClient bedzie lepszy.

    2. Ok, to trochę zmienia postać rzeczy , bwana 8/03/12 15:41
      (nawiasem, czytałem dokumentację na stronach Oracle, widać nieuważnie jednak). Ale tak w skrócie:

      np. chcę w ramach jednego połączenia (sesji, whatever) wejść na dany link, przeczytać treść strony (cookies, hrefy) a następnie przejść do jednego ze znalezionych tam linków i znów przeczytać jego treść. Bez rozłączania połączenia. Jak to należy zrobić?

      BTW. Dzięki za odzew:-D

      "you don't need your smile when I cut
      your throat"

  5. No wiec , Quad 8/03/12 16:46
    musialem sie odezwac skoro nikt sie wczesniej nie wychylil ;)
    Ogolnie, to wydaje mi sie, ze wystarczy zrobic kilka kolejnych HttpUrlConnection'ow (raczej pamietajac o zamykaniu poprzednich), tylko trzeba zadbac o to, zeby w kazdym byl dolaczony identyfikator sesji, ktory sie dostanie z servera - to jesli chodzi o utrzymanie sesji. W swiecie javy to sie najczesciej nazywa JSESSIONID i jest dolaczane do header'ow zapytania (no ale szczegoly zaleza od serwera).
    Jesli chodzi o utrzymanie polaczenia (tcp) to jest poziomi nizej i wydaje mi sie, ze to HttpUrlConnection zalatwia za twoimi plecami (uzyje tego samego polaczenia kilkukrotnie chyba ze mu tego explicite zakazesz). Tutaj troche o tym pisza:
    http://docs.oracle.com/.../net/http-keepalive.html
    http://stackoverflow.com/...-one-httpurlconnection
    Ogolnie to hasla http keep-alive i peristent connections.

    1. brzmi sensownie , bwana 8/03/12 18:34
      słowem między każdym disconnectem raz wysyłam i raz odbieram (zawsze w tej kolejności) za każdym razem odbudowując przechowany "gdzieś na boku" stan sesji. Przećwiczę, zdam relację dla potomnych, dzięki!:-D

      "you don't need your smile when I cut
      your throat"

      1. Ja robiłem takie rzeczy b. łatwo w PHP , pachura 8/03/12 19:34
        Używając funkcji CURL:
        http://www.php.net/...al/en/function.curl-exec.php

        Napisałem sobie skrypt który co jakiś czas loguje się do naszej aplikacji webowej a potem sprawdza czy w treści strony jest jakiśtam substring. Jeśli nie, wysyła maila że coś się wywaliło. Identyfikator sesji w cookie był między kolejnymi requestami zachowywany.

        1. toż w php nie ma problemu, podobnie jak w perlu, ale challenge był żeby w Javie , bwana 9/03/12 00:04
          Nawiasem, Quad wyprostował moje wypaczenia i działa:-)

          Dodatkowo, i tu widać przewagę Javy, zajętość pamięci przy 50 workerach w Javie to ok 80MB, w Perlu było to prawie 400MB. Zużycie procesora też w przypadku Javy jest jednak znacznie mniejsze niż w Perlu. No i przede wszystkim nie wypieprzają się wątki, a głównie o to chodziło. I sprawa rozwiązana, można zapomnieć:-D

          Dzięki za porady, naprowadzania i wszelką inną pomoc. Mam też nadzieję, że cycki pod linkiem się podobały;-D

          "you don't need your smile when I cut
          your throat"

          1. Hehe, , Quad 9/03/12 11:19
            ciesze sie, ze dziala :) Z java tak jest, ze jest wiele "lepszych" jezykow (w takim sensie, ze mozna w nich pewne rzeczy zrobic latwiej, szybciej, krocej i sensowniej :) ale ma te zalete, ze jest dojrzala (chociazby te watki ;)

            1. zgadza się, już widzę, że w porównaniu z językami skryptowymi, tu nie da się nastrugać , bwana 9/03/12 22:02
              kawałeczka kodu na kolanie. Ale też nie do tego, tylko do dużych projektów programistycznych, Java powstała.

              Nadal jednak upieram się, że do przetwarzania plików tekstowych Perl jest niewyjęty:-D

              "you don't need your smile when I cut
              your throat"

    
All rights reserved ® Copyright and Design 2001-2024, TwojePC.PL