Skip to content

Commit 882b926

Browse files
committed
Add improved HTTP examples
1 parent f8fa56f commit 882b926

8 files changed

+75
-8
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,7 @@ $browser->get('https://example.com/')->then(function (Psr\Http\Message\ResponseI
225225
});
226226
```
227227

228-
See also [ReactPHP's HTTP client](https://github.com/reactphp/http#client-usage) for more details.
228+
See also [ReactPHP's HTTP client](https://github.com/reactphp/http#client-usage) and any of the [examples](examples) for more details.
229229

230230
#### Connection timeout
231231

composer.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
"require-dev": {
2626
"phpunit/phpunit": "^9.0 || ^7.0 || ^5.0 || ^4.8",
2727
"react/event-loop": "^1.0 || ^0.5 || ^0.4 || ^0.3",
28+
"react/http": "^1.0",
2829
"clue/block-react": "^1.1"
2930
}
3031
}

examples/01-http-request.php

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<?php
2+
3+
// A simple example which uses an HTTP client to request https://example.com/ through an HTTP CONNECT proxy.
4+
// You can use any kind of proxy, for example https://github.com/leproxy/leproxy and execute it like this:
5+
//
6+
// $ php leproxy-latest.php
7+
//
8+
// To run the example, go to the project root and run:
9+
//
10+
// $ php examples/01-http-requests.php
11+
12+
use React\HTTP\Browser;
13+
14+
require __DIR__ . '/../vendor/autoload.php';
15+
16+
$loop = React\EventLoop\Factory::create();
17+
$proxy = new Clue\React\HttpProxy\ProxyConnector('127.0.0.1:8080', new React\Socket\Connector($loop));
18+
19+
$connector = new React\Socket\Connector($loop, array(
20+
'tcp' => $proxy,
21+
'dns' => false
22+
));
23+
24+
$browser = new React\Http\Browser($loop, $connector);
25+
26+
$browser->get('https://example.com/')->then(function (Psr\Http\Message\ResponseInterface $response) {
27+
var_dump($response->getHeaders(), (string) $response->getBody());
28+
}, 'printf');
29+
30+
$loop->run();

examples/01-proxy-https.php renamed to examples/11-proxy-raw-https-protocol.php

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,18 @@
11
<?php
22

33
// A simple example which requests https://google.com/ through an HTTP CONNECT proxy.
4+
// You can use any kind of proxy, for example https://github.com/leproxy/leproxy and execute it like this:
5+
//
6+
// $ php leproxy-latest.php
7+
//
8+
// To run the example, go to the project root and run:
9+
//
10+
// $ php examples/11-proxy-raw-https-protocol.php
11+
//
412
// The proxy can be given as first argument and defaults to localhost:8080 otherwise.
513
//
614
// For illustration purposes only. If you want to send HTTP requests in a real
7-
// world project, take a look at https://github.com/clue/reactphp-buzz#http-proxy
15+
// world project, take a look at example #01 and https://github.com/reactphp/http#client-usage.
816

917
use Clue\React\HttpProxy\ProxyConnector;
1018
use React\Socket\Connector;

examples/02-optional-proxy-https.php renamed to examples/12-optional-proxy-raw-https-protocol.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,17 @@
22

33
// A simple example which requests https://google.com/ either directly or through
44
// an HTTP CONNECT proxy.
5+
// To run the example, go to the project root and run:
6+
//
7+
// $ php examples/12-optional-proxy-raw-https-protocol.php
8+
//
59
// The Proxy can be given as first argument or does not use a proxy otherwise.
610
// This example highlights how changing from direct connection to using a proxy
711
// actually adds very little complexity and does not mess with your actual
812
// network protocol otherwise.
913
//
1014
// For illustration purposes only. If you want to send HTTP requests in a real
11-
// world project, take a look at https://github.com/clue/reactphp-buzz#http-proxy
15+
// world project, take a look at example #01 and https://github.com/reactphp/http#client-usage.
1216

1317
use Clue\React\HttpProxy\ProxyConnector;
1418
use React\Socket\Connector;

examples/03-custom-proxy-headers.php renamed to examples/13-custom-proxy-headers.php

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,18 @@
11
<?php
22

33
// A simple example which requests https://google.com/ through an HTTP CONNECT proxy.
4+
// You can use any kind of proxy, for example https://github.com/leproxy/leproxy and execute it like this:
5+
//
6+
// $ php leproxy-latest.php
7+
//
8+
// To run the example, go to the project root and run:
9+
//
10+
// $ php examples/13-custom-proxy-headers.php
11+
//
412
// The proxy can be given as first argument and defaults to localhost:8080 otherwise.
513
//
614
// For illustration purposes only. If you want to send HTTP requests in a real
7-
// world project, take a look at https://github.com/clue/reactphp-buzz#http-proxy
15+
// world project, take a look at example #01 and https://github.com/reactphp/http#client-usage.
816

917
use Clue\React\HttpProxy\ProxyConnector;
1018
use React\Socket\Connector;

examples/11-proxy-smtp.php renamed to examples/21-proxy-raw-smtp-protocol.php

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,15 @@
11
<?php
22

3-
// A simple example which uses a plain SMTP connection to Googlemail through a HTTP CONNECT proxy.
4-
// Proxy can be given as first argument and defaults to localhost:8080 otherwise.
3+
// A simple example which requests https://google.com/ through an HTTP CONNECT proxy.
4+
// You can use any kind of proxy, for example https://github.com/leproxy/leproxy and execute it like this:
5+
//
6+
// $ php leproxy-latest.php
7+
//
8+
// To run the example, go to the project root and run:
9+
//
10+
// $ php examples/21-proxy-raw-smtp-protocol.php
11+
//
12+
// The proxy can be given as first argument and defaults to localhost:8080 otherwise.
513
// Please note that MANY public proxies do not allow SMTP connections, YMMV.
614

715
use Clue\React\HttpProxy\ProxyConnector;

examples/12-proxy-smtps.php renamed to examples/22-proxy-raw-smtps-protocol.php

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,15 @@
11
<?php
22

3-
// A simple example which uses a secure SMTP connection to Googlemail through a HTTP CONNECT proxy.
4-
// Proxy can be given as first argument and defaults to localhost:8080 otherwise.
3+
// A simple example which requests https://google.com/ through an HTTP CONNECT proxy.
4+
// You can use any kind of proxy, for example https://github.com/leproxy/leproxy and execute it like this:
5+
//
6+
// $ php leproxy-latest.php
7+
//
8+
// To run the example, go to the project root and run:
9+
//
10+
// $ php examples/22-proxy-raw-smtps-protocol.php
11+
//
12+
// The proxy can be given as first argument and defaults to localhost:8080 otherwise.
513
// This example highlights how changing from plain connections (see previous
614
// example) to using a secure connection actually adds very little complexity
715
// and does not mess with your actual network protocol otherwise.

0 commit comments

Comments
 (0)