GET: Een pagina opvragen
GET kennen we allemaal wel, gewoon een pagina opvragen. Als je een
browser hebt die GET ondersteunt kom je al een heel eind, je kan alle
pagina's opvragen. Je kan alleen nog niet dingens als formulieren
verzenden.
In princiepe hoef je alleen het body gedeelte uit de pagina te knippen
en voor de rest moet je natuurlijk een goede request maken en je
sockets goed opbouwen. Met die basis krijg je iets als deze basis
browser:
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
// Nodige informatie
define('SERVER', 'www.example.org');
define('PORT', 80);
define('PATH', '/example.php');
// Versie
define('VERSION', '1.0');
// End of line
define('_EOL', "\r\n");
// Maak een socket
$sock = socket_create(AF_INET, SOCK_STREAM, 0);
if (!$sock) {
echo 'Fatal error: Couldn\'t create socket';
exit;
}
// Maak verbinding
if (!socket_connect($sock, SERVER, PORT)) {
echo 'Fatal error: Couldn\'t connect';
exit;
}
// Maak het request
$request = null;
$request .= 'GET ' . PATH . ' HTTP/1.0' . _EOL;
$request .= 'Host: ' . SERVER . _EOL;
$request .= 'User-Agent: LegolasWeb WebBrowserDemo ' . VERSION . _EOL;
$request .= _EOL;
// En verstuur het
if (!socket_send($sock, $request, strlen($request), 0)) {
echo 'Fatal error: Couldn\'t send request';
exit;
}
// Haal de response op
$output = null;
$buffer = null;
while (socket_recv($sock, $buffer, 1024, 0) != 0) {
$output .= $buffer;
}
// Isoleer het body gedeelte en toon het
$output = explode(_EOL . _EOL, $output);
$output = $output[1];
echo $output;
?>
Inhoudsopgave
- Inleiding
- Basiskennis HTTP
- GET: Een pagina opvragen
- POST I: Een formulier verzenden
- POST II: Bestanden uploaden
- De response headers en status
- Proxies
- En nu?