CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - Rejstrowanie na https za pomoca WinInet

Rejstrowanie na https za pomoca WinInet

problemy z tworzeniem programów do obsługi sieci, internetu, e-mail itp..

Rejstrowanie na https za pomoca WinInet

Nowy postprzez politech » poniedziałek, 26 lipca 2010, 13:41

Witam mam problem z napisaniem rejstrowania na strone https, moj kod:
INTERNET handle1,handle2,handle3,handle4;


KOD cpp:     UKRYJ  
char *post= "accountname=RudyLis52964324&email=automatprg%40o2.pl&agreeagreement=true&agreerules=true&agreeprivacy=true&step=creation&Submit.x=101&Submit.y=12";
char *agent="Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (.NET CLR 3.5.30729)";

handle1 = InternetOpen(agent, 0, NULL, NULL, 0);

handle2 = InternetConnect(handle1, "www.secure.xxx.com", INTERNET_DEFAULT_HTTPS_PORT, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0);

handle3 = HttpOpenRequest(handle2, "POST", "/account/?subtopic=createaccount", NULL, "command", 0, INTERNET_FLAG_SECURE,0);
HttpSendRequest(handle3, "Content-Type: application/x-www-form-urlencoded\r\n", 31,post,i );
int p=InternetErrorDlg (NULL,
      handle3, ERROR_INTERNET_INCORRECT_PASSWORD,
      FLAGS_ERROR_UI_FILTER_FOR_ERRORS |
      FLAGS_ERROR_UI_FLAGS_GENERATE_DATA |
      FLAGS_ERROR_UI_FLAGS_CHANGE_OPTIONS,
      NULL);
  InternetCloseHandle(handle1);
  InternetCloseHandle(handle2);
  InternetCloseHandle(handle3);


Po wykonaniu kodu nie nastepuje resjtracja. W funkcji SendReqest 3 od konca argument podaje 31 jako dlugosc header z msdn: "dwHeadersLength [in]

Size of the additional headers, in TCHARs. If this parameter is -1L and lpszHeaders is not NULL, the function assumes that lpszHeaders is zero-terminated (ASCIIZ), and the length is calculated. See Remarks for specifics."

Nie bardzo potrafie się przegryźć przez to.
Dodatkowo na msdn pisze:
"SSL and PCT functionality are provided by Schannel.dll, which is properly installed when you run the redistribution program Wintdist.exe or Wint351.exe. See Redist.txt or Axredist.txt for information about redistributing Schannel.dll."
Z tym, że jak pogooglowalem troche to okazalo sie ze te exeki sa potrzebne jak ma sie IE starszego niz 3.1(dobrze zrozumiałem?)


//POST /account/?subtopic=createaccount
accountname=1&email=2&agreeagreement=true&agreerules=true&agreeprivacy=true&step=creation&Submit.x=101&Submit.y=12
zczytany POST dla przykaldowych danych(rejstracja reczna) za pomoca Live HTTP headers

Z góry dziekuje za pomoc

Edit : po dodaniu kodu z InternetErrorDlg otrzymuje p= 6 ale wydaje mi sie, że źle wywołuje ta funkcje
Ostatnio edytowano poniedziałek, 26 lipca 2010, 14:38 przez politech, łącznie edytowano 1 raz
Avatar użytkownika
politech
Homos antropiczny
Homos antropiczny
 
Posty: 56
Dołączył(a): poniedziałek, 26 lipca 2010, 13:21
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: Windows XP Pro SP2
Kompilator: C++ Builder 2006
Gadu Gadu: 0
    Windows XPFirefox

Re: Rejstrowanie na https za pomoca WinInet

Nowy postprzez polymorphism » poniedziałek, 26 lipca 2010, 14:09

Po wykonaniu kodu nie nastepuje resjtracja.

A co dostajesz w odpowiedzi?

Nie bardzo potrafie się przegryźć przez to.

Chodzi o to, że jeśli dasz wartość -1, to funkcja sama sobie obliczy długość stringa podanego w drugim parametrze, zakładając, że jest to string zakończony zerem.

swoją drogą, jeśli wklejasz kod, to otaguj go. U góry masz przycisk CPP, zaznacz kod i naciśnij ten przycisk.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Rejstrowanie na https za pomoca WinInet

Nowy postprzez politech » poniedziałek, 26 lipca 2010, 14:41

Poprawiłem kod aby otrzymać kod błędu i uzyskałem p=6

Edit: jak z tym ssl? wininet mi to zapewnia czy musze coś dodatkowo łączyć?
Avatar użytkownika
politech
Homos antropiczny
Homos antropiczny
 
Posty: 56
Dołączył(a): poniedziałek, 26 lipca 2010, 13:21
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: Windows XP Pro SP2
Kompilator: C++ Builder 2006
Gadu Gadu: 0
    Windows XPFirefox

Re: Rejstrowanie na https za pomoca WinInet

Nowy postprzez polymorphism » poniedziałek, 26 lipca 2010, 15:16

Przecież p to wartość zwrócona przez dialog, a nie potencjalny błąd funkcji HttpSendRequest :roll: Czytaj dokumentację! GetLastError zwraca numer błędu, którego opis znajdziesz w wininet.h.

Edit: jak z tym ssl? wininet mi to zapewnia

Raczej tak, tzn. nie musisz nic dołączać do programu. Jeśli już, to system musi mieć tę bibliotekę zainstalowaną (jest ona częścią IE).
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Rejstrowanie na https za pomoca WinInet

Nowy postprzez politech » poniedziałek, 26 lipca 2010, 15:36

12007 ERROR_INTERNET_NAME_NOT_RESOLVED
The server name could not be resolved.
to otrzymuje po wyslaniu POST

Edit: pogooglowalem i znalazłem :
resolve this problem, you can pass the IP or the server name in the InternetConnect method. For example, you can use the InteretConnect method as follows:

KOD cpp:     UKRYJ  
hConnect = InternetConnect(hOpen, "www.microsoft.com", INTERNET_DEFAULT_HTTP_PORT,
NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0);


z tym ze ja właśnie tak używam InternetConnect wiec nie bardzo wiem co z tym zrobić
Avatar użytkownika
politech
Homos antropiczny
Homos antropiczny
 
Posty: 56
Dołączył(a): poniedziałek, 26 lipca 2010, 13:21
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: Windows XP Pro SP2
Kompilator: C++ Builder 2006
Gadu Gadu: 0
    Windows XPFirefox

Re: Rejstrowanie na https za pomoca WinInet

Nowy postprzez polymorphism » poniedziałek, 26 lipca 2010, 16:30

Chodzi o to, że adres strony jest nieprawidłowy.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Rejstrowanie na https za pomoca WinInet

Nowy postprzez politech » poniedziałek, 26 lipca 2010, 21:32

... no tak nie wiem dlaczego dalem www.secure.xxx.com jak jest secure.xxx.pl po zmianie niestety otrzymuje kod błędu =2(?) a rejstracja nei dokonuej sie dalej(nie otrzymuej maial zwrotnego)
Avatar użytkownika
politech
Homos antropiczny
Homos antropiczny
 
Posty: 56
Dołączył(a): poniedziałek, 26 lipca 2010, 13:21
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: Windows XP Pro SP2
Kompilator: C++ Builder 2006
Gadu Gadu: 0
    Windows XPFirefox

Re: Rejstrowanie na https za pomoca WinInet

Nowy postprzez polymorphism » poniedziałek, 26 lipca 2010, 22:18

Nie wiem co to za strona, ale http://secure.xxx.pl nie wchodzi mi w przeglądarce.

po zmianie niestety otrzymuje kod błędu =2

Inne błędy zwrócone przez GetLastError masz opisane w winerror.h. Wartość 2 to ERROR_FILE_NOT_FOUND. Według dokumentacji błąd ten występuje, gdy:

(...) the resource is not found in the Internet cache. (w trybie offline)

C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Rejstrowanie na https za pomoca WinInet

Nowy postprzez politech » poniedziałek, 26 lipca 2010, 22:53

nie bardzo wiem jak mam zareagowac na ten error
Avatar użytkownika
politech
Homos antropiczny
Homos antropiczny
 
Posty: 56
Dołączył(a): poniedziałek, 26 lipca 2010, 13:21
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: Windows XP Pro SP2
Kompilator: C++ Builder 2006
Gadu Gadu: 0
    Windows XPFirefox

Re: Rejstrowanie na https za pomoca WinInet

Nowy postprzez polymorphism » wtorek, 27 lipca 2010, 09:46

politech napisał(a):nie bardzo wiem jak mam zareagowac na ten error

Problem w tym, że strona, którą podałeś, to znaczy ta z końcówką .pl, w ogóle nie działa. Błąd ERROR_FILE_NOT_FOUND świadczy o tym, że nie masz połączenia z siecią lub sesja działa w trybie offline, ponieważ funkcja próbuje czytać stronę z cache'u przeglądarki. Więc może zacznijmy od tego, co to za strona i dlaczego nie mogę na nią wejść?
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Rejstrowanie na https za pomoca WinInet

Nowy postprzez politech » wtorek, 27 lipca 2010, 09:48

https://secure.tibia.com/account/?subto ... ateaccount

to jest strona do ktorej chciałem bota napisać a wczesniej podawalem przykładowe
Avatar użytkownika
politech
Homos antropiczny
Homos antropiczny
 
Posty: 56
Dołączył(a): poniedziałek, 26 lipca 2010, 13:21
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: Windows XP Pro SP2
Kompilator: C++ Builder 2006
Gadu Gadu: 0
    Windows XPFirefox

Re: Rejstrowanie na https za pomoca WinInet

Nowy postprzez polymorphism » wtorek, 27 lipca 2010, 14:47

U mnie śmiga, to znaczy dostaje potwierdzenie, że mam czekać na maila.

Fragment kodu, który skrobnąłem na potrzeby testów:
KOD cpp:     UKRYJ  
(...)

if(HttpSendRequest(handle3,
                "Content-Type: application/x-www-form-urlencoded\r\n",
                -1,
                (LPVOID)post,
                strlen(post) + 1) == TRUE)
{
        char    buff[2000];
        DWORD   cblen = 2000;

        if(HttpQueryInfo(handle3,HTTP_QUERY_STATUS_CODE,buff,&cblen,NULL) == TRUE && buff[0] == '2')
        {
                DWORD   cont_len = -1;
                cblen = 2000;
                if(HttpQueryInfo(handle3,HTTP_QUERY_CONTENT_LENGTH,buff,&cblen,NULL) == TRUE)
                {
                        sscanf(buff,"%u",&cont_len);
                }
               
                /* czytamy stronę z odpowiedzią */
                while(InternetReadFile(handle3,buff,min<DWORD>(2000,cont_len),&cblen) == TRUE && cblen > 0)
                {
                        cont_len -= cblen;
                }

                if(GetLastError() == 0)
                {
                        /* wszystko poszło jak należy (choć niekoniecznie rejestracja) */
                }
        }
}
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Rejstrowanie na https za pomoca WinInet

Nowy postprzez politech » wtorek, 27 lipca 2010, 18:44

KOD cpp:     UKRYJ  
min<DWORD>(2000,cont_len)

z jakiej bibljoteki to jest?

I jeszcze pytanie przed twoim kodem rozumiem kod z mojego pierwszego posta? Czy może zmeinialeś jakos te funkcjie? Bo
U mnie śmiga, to znaczy dostaje potwierdzenie, że mam czekać na maila.

i jeśli użyłeś tego maila z mojego POST to nic na niego nie przychodzi a normalnie mail pojawia sie po paru s
Avatar użytkownika
politech
Homos antropiczny
Homos antropiczny
 
Posty: 56
Dołączył(a): poniedziałek, 26 lipca 2010, 13:21
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: Windows XP Pro SP2
Kompilator: C++ Builder 2006
Gadu Gadu: 0
    Windows XPFirefox

Re: Rejstrowanie na https za pomoca WinInet

Nowy postprzez polymorphism » wtorek, 27 lipca 2010, 20:00

z jakiej bibljoteki to jest?

algorithm

I jeszcze pytanie przed twoim kodem rozumiem kod z mojego pierwszego posta?

Tak, ale tylko część.

Czy może zmeinialeś jakos te funkcjie?

Nie.

jeśli użyłeś tego maila z mojego POST to nic na niego nie przychodzi

Użyłem xxx@xxx.xx.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Rejstrowanie na https za pomoca WinInet

Nowy postprzez politech » wtorek, 27 lipca 2010, 21:27

Dzieki wielkie za pomoc !
Avatar użytkownika
politech
Homos antropiczny
Homos antropiczny
 
Posty: 56
Dołączył(a): poniedziałek, 26 lipca 2010, 13:21
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: Windows XP Pro SP2
Kompilator: C++ Builder 2006
Gadu Gadu: 0
    Windows XPFirefox

Następna strona

  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Aplikacje sieciowe

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 9 gości

cron