OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 part of dart.io; | 5 part of dart.io; |
6 | 6 |
7 /** | 7 /** |
8 * HTTP status codes. | 8 * HTTP status codes. |
9 */ | 9 */ |
10 abstract class HttpStatus { | 10 abstract class HttpStatus { |
(...skipping 730 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
741 | 741 |
742 /** | 742 /** |
743 * A server-side object | 743 * A server-side object |
744 * that contains the content of and information about an HTTP request. | 744 * that contains the content of and information about an HTTP request. |
745 * | 745 * |
746 * __Note__: Check out the | 746 * __Note__: Check out the |
747 * [http_server](http://pub.dartlang.org/packages/http_server) | 747 * [http_server](http://pub.dartlang.org/packages/http_server) |
748 * package, which makes working with the low-level | 748 * package, which makes working with the low-level |
749 * dart:io HTTP server subsystem easier. | 749 * dart:io HTTP server subsystem easier. |
750 * | 750 * |
751 * HttpRequest objects are generated by an [HttpServer], | 751 * `HttpRequest` objects are generated by an [HttpServer], |
752 * which listens for HTTP requests on a specific host and port. | 752 * which listens for HTTP requests on a specific host and port. |
753 * For each request received, the HttpServer, which is a [Stream], | 753 * For each request received, the HttpServer, which is a [Stream], |
754 * generates an HttpRequest object and adds it to the stream. | 754 * generates an `HttpRequest` object and adds it to the stream. |
755 * | 755 * |
756 * An HttpRequest object delivers the body content of the request | 756 * An `HttpRequest` object delivers the body content of the request |
757 * as a stream of bytes. | 757 * as a stream of byte lists. |
758 * The object also contains information about the request, | 758 * The object also contains information about the request, |
759 * such as the method, URI, and headers. | 759 * such as the method, URI, and headers. |
760 * | 760 * |
761 * In the following code, an HttpServer listens | 761 * In the following code, an HttpServer listens |
762 * for HTTP requests and, within the callback function, | 762 * for HTTP requests and, within the callback function, |
763 * uses the HttpRequest object's `method` property to dispatch requests. | 763 * uses the `HttpRequest` object's `method` property to dispatch requests. |
764 * | 764 * |
765 * final HOST = InternetAddress.LOOPBACK_IP_V4; | 765 * final HOST = InternetAddress.LOOPBACK_IP_V4; |
766 * final PORT = 4040; | 766 * final PORT = 4040; |
767 * | 767 * |
768 * HttpServer.bind(HOST, PORT).then((_server) { | 768 * HttpServer.bind(HOST, PORT).then((_server) { |
769 * _server.listen((HttpRequest request) { | 769 * _server.listen((HttpRequest request) { |
770 * switch (request.method) { | 770 * switch (request.method) { |
771 * case 'GET': | 771 * case 'GET': |
772 * handleGetRequest(request); | 772 * handleGetRequest(request); |
773 * break; | 773 * break; |
774 * case 'POST': | 774 * case 'POST': |
775 * ... | 775 * ... |
776 * } | 776 * } |
777 * }, | 777 * }, |
778 * onError: handleError); // listen() failed. | 778 * onError: handleError); // listen() failed. |
779 * }).catchError(handleError); | 779 * }).catchError(handleError); |
780 * | 780 * |
781 * Listen to the HttpRequest stream to handle the | 781 * Listen to the `HttpRequest` stream to handle the |
782 * data and be notified once the entire body is received. | 782 * data and be notified once the entire body is received. |
783 * An HttpRequest object contains an [HttpResponse] object, | 783 * An `HttpRequest` object contains an [HttpResponse] object, |
784 * to which the server can write its response. | 784 * to which the server can write its response. |
785 * For example, here's a skeletal callback function | 785 * For example, here's a skeletal callback function |
786 * that responds to a request: | 786 * that responds to a request: |
787 * | 787 * |
788 * void handleGetRequest(HttpRequest req) { | 788 * void handleGetRequest(HttpRequest req) { |
789 * HttpResponse res = req.response; | 789 * HttpResponse res = req.response; |
790 * var body = []; | 790 * var body = []; |
791 * req.listen((List<int> buffer) => body.add(buffer), | 791 * req.listen((List<int> buffer) => body.add(buffer), |
792 * onDone: () { | 792 * onDone: () { |
793 * res.write('Received ${body.length} for request '); | 793 * res.write('Received ${body.length} for request '); |
(...skipping 574 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1368 * HttpClientRequest request = ... | 1368 * HttpClientRequest request = ... |
1369 * request.headers.add(HttpHeaders.CONTENT_TYPE, "text/plain"); | 1369 * request.headers.add(HttpHeaders.CONTENT_TYPE, "text/plain"); |
1370 * request.write(...); // Strings written will be ISO-8859-1 encoded. | 1370 * request.write(...); // Strings written will be ISO-8859-1 encoded. |
1371 * | 1371 * |
1372 * If an unsupported encoding is used an exception will be thrown if | 1372 * If an unsupported encoding is used an exception will be thrown if |
1373 * using one of the write methods taking a string. | 1373 * using one of the write methods taking a string. |
1374 */ | 1374 */ |
1375 abstract class HttpClientRequest implements IOSink { | 1375 abstract class HttpClientRequest implements IOSink { |
1376 /** | 1376 /** |
1377 * Gets and sets the requested persistent connection state. | 1377 * Gets and sets the requested persistent connection state. |
| 1378 * |
1378 * The default value is [:true:]. | 1379 * The default value is [:true:]. |
1379 */ | 1380 */ |
1380 bool persistentConnection; | 1381 bool persistentConnection; |
1381 | 1382 |
1382 /** | 1383 /** |
1383 * Set this property to [:true:] if this request should | 1384 * Set this property to [:true:] if this request should |
1384 * automatically follow redirects. The default is [:true:]. | 1385 * automatically follow redirects. The default is [:true:]. |
1385 * | 1386 * |
1386 * Automatic redirect will only happen for "GET" and "HEAD" requests | 1387 * Automatic redirect will only happen for "GET" and "HEAD" requests |
1387 * and only for the status codes [:HttpHeaders.MOVED_PERMANENTLY:] | 1388 * and only for the status codes [:HttpHeaders.MOVED_PERMANENTLY:] |
(...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1642 class RedirectException implements HttpException { | 1643 class RedirectException implements HttpException { |
1643 final String message; | 1644 final String message; |
1644 final List<RedirectInfo> redirects; | 1645 final List<RedirectInfo> redirects; |
1645 | 1646 |
1646 const RedirectException(this.message, this.redirects); | 1647 const RedirectException(this.message, this.redirects); |
1647 | 1648 |
1648 String toString() => "RedirectException: $message"; | 1649 String toString() => "RedirectException: $message"; |
1649 | 1650 |
1650 Uri get uri => redirects.last.location; | 1651 Uri get uri => redirects.last.location; |
1651 } | 1652 } |
OLD | NEW |