some examples
authorMichael Wallner <mike@php.net>
Tue, 13 May 2014 15:14:16 +0000 (17:14 +0200)
committerMichael Wallner <mike@php.net>
Tue, 13 May 2014 15:14:46 +0000 (17:14 +0200)
http/Client.md

index faacc4493fef0740b7fdb59a469bda06751c1b64..64d7aa8f1fc1e0c7a2db170553875a136b4233e4 100644 (file)
@@ -1,6 +1,105 @@
 # class http\Client implements SplSubject, Countable
 
-The HTTP client.
+The HTTP client. The only driver currently supported is http\Client\Curl.
+
+## Examples:
+
+### Sending a simple GET request:
+
+    <?php
+
+    $request = new http\Client\Request("GET",
+        "http://localhost",
+        ["User-Agent"=>"My Client/0.1"]
+    );
+    $request->setOptions(["timeout"=>1]);
+
+    $client = new http\Client;
+    $client->enqueue($request)->send();
+
+    // pop the last retrieved response
+    $response = $client->getResponse();
+    printf("%s returned '%s' (%d)\n",
+        $response->getTransferInfo("effective_url"),
+        $response->getInfo(),
+        $response->getResponseCode()
+    );
+    ?>
+
+#### Yields:
+
+    http://localhost/ returned 'HTTP/1.1 200 OK' (200)
+
+
+### Submitting a standard form:
+
+    <?php
+
+    $request = new http\Client\Request("POST",
+        "http://localhost/post.php",
+        ["Content-Type" => "application/x-www-form-urlencoded"]
+    );
+    $request->getBody()->append(new http\QueryString([
+        "user" => "mike",
+        "name" => "Michael Wallner"
+    ]));
+
+    $client = new http\Client;
+    $client->setOptions(["ssl" => [
+               "version" => http\Client\Curl\SSL_VERSION_TLSv1
+       ]]);
+       $client->enqueue($request)->send();
+
+       // ask for the response for this specific request
+       $response = $client->getResponse($request);
+       printf("-> %s\n", $response->getInfo());
+
+       ?>
+
+#### Yields:
+
+    -> HTTP/1.1 200 OK
+
+
+### Submitting a multipart form:
+
+    <?php
+
+    $request = new http\Client\Request("POST",
+        "http://localhost/post.php"
+    );
+
+    // http\Message\Body::addForm() will automatically add
+    // Content-Type: multipart/form-data to the request headers
+    $request->getBody()->addForm([
+        "user" => "mike",
+        "name" => "Michael Wallner"
+    ], [
+        [
+            "name" => "image",
+            "type" => "image/jpeg",
+            "file" => "image.jpg"
+        ]
+    ]);
+
+    $client = new http\Client;
+    $client->setOptions(["ssl" => [
+        "version" => http\Client\Curl\SSL_VERSION_TLSv1
+    ]]);
+    $client->enqueue($request)->send();
+
+    // ask for the response for this specific request
+    $response = $client->getResponse($request);
+    printf("-> %.2F kB\n @ %.2F Mbit",
+        .001 * $response->getTransferInfo("size_upload"),
+        .0000008 * $response->getTransferInfo("speed_upload")
+    );
+    ?>
+
+#### Yields:
+
+    -> 15.98 kB @ 6.77 Mbit
+
 
 ## Properties: