Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Delphi - Logowanie i pobieranie pliku metodą POST

redie 04 Gru 2012 11:04 1632 4
  • #1 04 Gru 2012 11:04
    redie
    Poziom 15  

    Witam,
    próbuję się zalogować na swoje konto na pewnej stronie a następnie pobrać plik metodą POST.

    Chodzę trochę po omacku, ponieważ logowanie zwraca mi błąd HTTP/1.0 500 Internal Server Error, a pobieranie pliku zwraca mi true - a gdzie plik?
    Poniżej przesyłam to co napisałem a pod tym fragmenty html tej strony.
    Prosiłbym o podpowiedź.

    Mój kod - Logowanie a następnie pobranie pliku

    Kod: delphi
    Zaloguj się, aby zobaczyć kod


    html strony - logowanie
    Kod: html4strict
    Zaloguj się, aby zobaczyć kod


    html strony - przycisk do pobrania pliku
    Kod: html4strict
    Zaloguj się, aby zobaczyć kod

    0 4
  • #2 04 Gru 2012 11:27
    arnoldziq
    Moderator Programowanie

    A ustawił kolega, przed wysłaniem zapytania o logowanie, typ pożądanego zapytania?
    Coś jak tutaj :

    Kod: delphi
    Zaloguj się, aby zobaczyć kod

    0
  • #3 04 Gru 2012 11:40
    redie
    Poziom 15  

    Pomiędzy moim postem pierwszym postem a Twoją odpowiedzią sprówałem dorzucić dokładnie to co napisałeś, ale nie zmieniło to komunikatu błędu, próbowałem również ustawić typ na 'text/html', ale też nic z tego.

    W Firefoxie mam taki opis gdy klikam Zaloguj. Może chodzi o kodowanie?

    Cytat:
    Nagłówki żądania

    Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Encoding:gzip, deflate
    Accept-Language:pl,en-us;q=0.7,en;q=0.3
    Connection:keep-alive
    Host:jakasstrona.pl
    Referer:http://jakasstrona.pl/auth
    User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64; rv:10.0) Gecko/20100101 Firefox/10.0

    Nagłówki odpowiedzi

    Cache-Control:no-store, no-cache, must-revalidate, post-check=0, pre-check=0
    Connection:Keep-Alive
    Content-Encoding:gzip
    Content-Length:20
    Content-Type:text/html; charset=UTF-8
    Date:Tue, 04 Dec 2012 10:33:51 GMT
    Expires:Thu, 19 Nov 1981 08:52:00 GMT
    Keep-Alive:timeout=15, max=100
    Location:/Pragma:no-cache
    Server:Apache/2.2.16 (Debian)
    Vary:Accept-Encoding
    X-Powered-By:PHP/5.3.3-7+squeeze3

    0
  • Pomocny post
    #4 04 Gru 2012 11:59
    arnoldziq
    Moderator Programowanie

    Skup się najpierw na samym logowaniu.
    Skoro zwraca ci błąd 500, to znaczy, że skrypt wywołujesz, ale nie kończy on swojego działania za względu na jakieś błędy.
    Może to być cokolwiek. Nawet nie wysłanie "zawartości" przycisku Submit.

    Kod: html4strict
    Zaloguj się, aby zobaczyć kod

    Zainstaluj sobie do FF jakąś wtyczkę, która pokazuje dokładnie jakie dane zostały wysłane w zapytaniu POST, z normalnego logowania na stronie, i ustaw dokładnie te dane w swoim programie.
    Kiedyś była taka wtyczka o nazwie Data Temper, ale jakoś nie mogę jej teraz odnaleźć.

    Co do pobrania tego zdjęcia/obrazka, to skrypt koduje dane w formacie json. Bez dokładnego sprawdzenia jak te dane wyglądają w formacie zakodowanym, nie dasz rady wysłać poprawnego zapytania podając tylko parametry POST.

    Dodano po 2 [minuty]:

    Znalazłem tę wtyczkę : https://addons.mozilla.org/en-us/firefox/addon/tamper-data/eula/79565?src=dp-btn-primary

    0
  • #5 04 Gru 2012 12:33
    redie
    Poziom 15  

    Ten dodatek: Dane Temper okazał się bardzo przydatny.
    Ustawiłem wszystko tak jak tam jest to napisane i logownie przeszło.

    Następnie wykonałem POST z dwoma parametrami i ustawieniami spisanymi z Dane Temper

    Kod: delphi
    Zaloguj się, aby zobaczyć kod


    a następnie znów POST bez parametrów, ponieważ w htmlu było coś takiego:
    Kod: html4strict
    Zaloguj się, aby zobaczyć kod


    no i dostałem w odpowiedzi plik JPG.
    Dzięki :)

    0
  Szukaj w 5mln produktów