Chcę przesłać dane metodą GET za pomocą Winsock'a.
Znazłem kod odpowiedzialny za wysyłanie na forum:
var
wsa : WSAData;
ErrorCode : Integer;
Adr: String ;
Gniazdo : Integer;
socket_info: sockaddr_in;
Handle : THandle;
Buffer : array[0..1024] of char;
begin
adr := '--adres IP do strony--';
ErrorCode := WSAStartup(MAKEWORD(2,0),wsa);
Gniazdo := Socket(AF_INET, SOCK_STREAM, 0);
socket_info.sin_family := AF_INET;
socket_info.sin_addr.S_addr := inet_addr(PChar(Adr));
socket_info.sin_port := htons(80);
ErrorCode := connect(Gniazdo, socket_info, SizeOf(socket_info));
WSAAsyncSelect(Gniazdo,Handle,WM_USER, FD_READ or FD_CONNECT or FD_ACCEPT);
Buffer := 'GET /skrypt.php? / HTTP/1.1'+#13#10+
'TE: deflate,gzip;q=0.3'+#13#10+
'Connection: TE, close'+#13#10+
'Host: www.jakastrona.pl'+#13#10+
'User-Agent: WinSock Delphi'+#13#10+#13#10;
send(Gniazdo, Buffer, SizeOf(Buffer), 0);
Recv(Gniazdo, Odebralem, SizeOf(Odebralem), 0);
end;
Mianowicie chodzi mi o tą część kodu:
Buffer := 'GET /skrypt.php? / HTTP/1.1'+#13#10+
'TE: deflate,gzip;q=0.3'+#13#10+
'Connection: TE, close'+#13#10+
'Host: www.jakastrona.pl'+#13#10+
'User-Agent: WinSock Delphi'+#13#10+#13#10;
Przesyłane dane muszą być w tablicy char. Założmy, że wpiszę ręcznie dane:
Buffer := 'GET /skrypt.php?dane1=abc&dane2=def&dane3=ghi / HTTP/1.1'+#13#10+
...
...
...
...
Skrypt wykona się, dane zostaną przesłane.
Ale nie mogę wpisać ręcznie tych danych. Dane do przekazania mam w zmiennej:
var
dowyslania:string;
begin
dowyslania := 'dane1=abc&dane2=def&dane3=ghi'
Teraz wpisuję:
Buffer := 'GET /skrypt.php?'+dowyslania+' / HTTP/1.1'+#13#10+
...
...
...
...
Wyrzuca błędy, że złe typy. Nie można mieszać chara ze stringiem, więc próbowałem stringa zapisać do nowej tablicy i tablice ze sobą skleić:
var
dowyslania:string;
tablica:array[0..512] of char;
i:integer;
begin
dowyslania := 'dane1=abc&dane2=def&dane3=ghi'
for i:=0 to length(dowyslania) do tablica[i] := dowyslania[i];
Podstawiłem:
Buffer := 'GET /skrypt.php?'+tablica+' / HTTP/1.1'+#13#10+
...
...
...
...
Również błędy...
Skleiłem obie tablice ręcznie w nowej tablicy i skrypt się nie wykonuje.
Nie mam już pojęcia co może być źle, dlatego piszę na forum.
Jakieś pomysły?