Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(439)

Side by Side Diff: sdk/lib/io/http.dart

Issue 13938003: Update the dartdoc for HttpClient (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Addressed review comments Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 670 matching lines...) Expand 10 before | Expand all | Expand 10 after
681 * header of the response. When the header has been set up the methods 681 * header of the response. When the header has been set up the methods
682 * from the [IOSink] can be used to write the actual body of the HTTP 682 * from the [IOSink] can be used to write the actual body of the HTTP
683 * response. When one of the [IOSink] methods is used for the 683 * response. When one of the [IOSink] methods is used for the
684 * first time the request header is send. Calling any methods that 684 * first time the request header is send. Calling any methods that
685 * will change the header after it is sent will throw an exception. 685 * will change the header after it is sent will throw an exception.
686 * 686 *
687 * When writing string data through the [IOSink] the encoding used 687 * When writing string data through the [IOSink] the encoding used
688 * will be determined from the "charset" parameter of the 688 * will be determined from the "charset" parameter of the
689 * "Content-Type" header. 689 * "Content-Type" header.
690 * 690 *
691 * HttpResponse response = ... 691 * HttpResponse response = ...
692 * response.headers.contentType 692 * response.headers.contentType
693 * = new ContentType("application", "json", charset: "utf-8"); 693 * = new ContentType("application", "json", charset: "utf-8");
694 * response.write(...); // Strings written will be UTF-8 encoded. 694 * response.write(...); // Strings written will be UTF-8 encoded.
695 * 695 *
696 * If no charset is provided the default of ISO-8859-1 (Latin 1) will 696 * If no charset is provided the default of ISO-8859-1 (Latin 1) will
697 * be used. 697 * be used.
698 * 698 *
699 * HttpResponse response = ... 699 * HttpResponse response = ...
700 * response.headers.add(HttpHeaders.CONTENT_TYPE, "text/plain"); 700 * response.headers.add(HttpHeaders.CONTENT_TYPE, "text/plain");
701 * response.write(...); // Strings written will be ISO-8859-1 encoded. 701 * response.write(...); // Strings written will be ISO-8859-1 encoded.
702 * 702 *
703 * If an unsupported encoding is used an exception will be thrown if 703 * If an unsupported encoding is used an exception will be thrown if
704 * using one of the write methods taking a string. 704 * using one of the write methods taking a string.
705 */ 705 */
706 abstract class HttpResponse implements IOSink<HttpResponse> { 706 abstract class HttpResponse implements IOSink<HttpResponse> {
707 // TODO(ajohnsen): Add documentation of how to pipe a file to the response. 707 // TODO(ajohnsen): Add documentation of how to pipe a file to the response.
708 /** 708 /**
709 * Gets and sets the content length of the response. If the size of 709 * Gets and sets the content length of the response. If the size of
710 * the response is not known in advance set the content length to 710 * the response is not known in advance set the content length to
711 * -1 - which is also the default if not set. 711 * -1 - which is also the default if not set.
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
755 755
756 /** 756 /**
757 * Gets information about the client connection. Returns [null] if the socket 757 * Gets information about the client connection. Returns [null] if the socket
758 * is not available. 758 * is not available.
759 */ 759 */
760 HttpConnectionInfo get connectionInfo; 760 HttpConnectionInfo get connectionInfo;
761 } 761 }
762 762
763 763
764 /** 764 /**
765 * HTTP client factory. The [HttpClient] handles all the sockets associated 765 * The [HttpClient] class implements the client side of the HTTP
766 * with the [HttpClientConnection]s and when the endpoint supports it, it will 766 * protocol. It contains a number of methods to send a HTTP request
767 * try to reuse opened sockets for several requests to support HTTP 1.1 767 * to a HTTP server and receive a HTTP response back.
768 * persistent connections. This means that sockets will be kept open for some 768 *
769 * time after a requests have completed, unless HTTP procedures indicate that it 769 * This is a two-step process, triggered by two futures. When the
770 * must be closed as part of completing the request. Use [:HttpClient.close:] 770 * first future completes with a [HttpClientRequest] the underlying
771 * to force close the idle sockets. 771 * network connection has been established, but no data has yet been
772 * sent. The HTTP headers and body can be set on the request, and
773 * [:close:] is called to sent it to the server.
774 *
775 * The second future, is returned by [:close:], completes with an
Bill Hesse 2013/04/12 08:26:00 future, which is returned ...
Søren Gjesse 2013/04/12 08:28:37 Done.
776 * [HttpClientResponse] object when the response is received from the
777 * server. This object contains the headers and body of the response.
778
779 * The future for [HttpClientRequest] is created by methods such as
780 * [getUrl] and [open].
781 *
782 * When the HTTP response is ready a [HttpClientResponse] object is
783 * provided which provides access to the headers and body of the response.
784 *
785 * HttpClient client = new HttpClient();
786 * client.getUrl(new Uri.fromString("http://www.example.com/"))
787 * .then((HttpClientRequest request) {
788 * // Prepare the request then call close on it to send it.
789 * return request.close();
790 * })
791 * .then((HttpClientResponse response) {
792 * // Process the response.
793 * });
794 *
795 * All [HttpClient] requests set the following header by default:
796 *
797 * Accept-Encoding: gzip
798 *
799 * This allows the HTTP server to use gzip compression for the body if
800 * possible. If this behavior is not desired set the
801 * "Accept-Encoding" header to something else.
802 *
803 * The [HttpClient] supports persistent connections and caches network
804 * connections to reuse then for multiple requests whenever
805 * possible. This means that network connections can be kept open for
806 * some time after a request have completed. Use [:HttpClient.close:]
807 * to force shut down the [HttpClient] object and close the idle
808 * network connections.
772 */ 809 */
773 abstract class HttpClient { 810 abstract class HttpClient {
774 static const int DEFAULT_HTTP_PORT = 80; 811 static const int DEFAULT_HTTP_PORT = 80;
775 static const int DEFAULT_HTTPS_PORT = 443; 812 static const int DEFAULT_HTTPS_PORT = 443;
776 813
777 factory HttpClient() => new _HttpClient(); 814 factory HttpClient() => new _HttpClient();
778 815
779 /** 816 /**
780 * Opens a HTTP connection. The returned [HttpClientRequest] is used to 817 * Opens a HTTP connection. The returned [HttpClientRequest] is used to
781 * fill in the content of the request before sending it. The 'host' header for 818 * fill in the content of the request before sending it. The 'host' header for
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
899 * 936 *
900 * [:no_proxy:] and [:NO_PROXY:] specify a comma separated list of 937 * [:no_proxy:] and [:NO_PROXY:] specify a comma separated list of
901 * postfixes of hostnames for which not to use the proxy 938 * postfixes of hostnames for which not to use the proxy
902 * server. E.g. the value "localhost,127.0.0.1" will make requests 939 * server. E.g. the value "localhost,127.0.0.1" will make requests
903 * to both "localhost" and "127.0.0.1" not use a proxy. If both are set 940 * to both "localhost" and "127.0.0.1" not use a proxy. If both are set
904 * the lower case one takes precedence. 941 * the lower case one takes precedence.
905 * 942 *
906 * To activate this way of resolving proxies assign this function to 943 * To activate this way of resolving proxies assign this function to
907 * the [findProxy] property on the [HttpClient]. 944 * the [findProxy] property on the [HttpClient].
908 * 945 *
909 * HttpClient client = new HttpClient(); 946 * HttpClient client = new HttpClient();
910 * client.findProxy = HttpClient.findProxyFromEnvironment; 947 * client.findProxy = HttpClient.findProxyFromEnvironment;
911 * 948 *
912 * If you don't want to use the system environment you can use a 949 * If you don't want to use the system environment you can use a
913 * different one by wrapping the function. 950 * different one by wrapping the function.
914 * 951 *
915 * HttpClient client = new HttpClient(); 952 * HttpClient client = new HttpClient();
916 * client.findProxy = (url) { 953 * client.findProxy = (url) {
917 * return HttpClient.findProxyFromEnvironment( 954 * return HttpClient.findProxyFromEnvironment(
918 * url, {"http_proxy": ..., "no_proxy": ...}); 955 * url, {"http_proxy": ..., "no_proxy": ...});
919 * } 956 * }
920 */ 957 */
921 static String findProxyFromEnvironment(Uri url, 958 static String findProxyFromEnvironment(Uri url,
922 {Map<String, String> environment}) { 959 {Map<String, String> environment}) {
923 return _HttpClient._findProxyFromEnvironment(url, environment); 960 return _HttpClient._findProxyFromEnvironment(url, environment);
924 } 961 }
925 962
926 /** 963 /**
927 * Shutdown the HTTP client. If [force] is [:false:] (the default) 964 * Shutdown the HTTP client. If [force] is [:false:] (the default)
928 * the [:HttpClient:] will be kept alive until all active 965 * the [:HttpClient:] will be kept alive until all active
929 * connections are done. If [force] is [:true:] any active 966 * connections are done. If [force] is [:true:] any active
(...skipping 14 matching lines...) Expand all
944 * header of the request. When the header has been set up the methods 981 * header of the request. When the header has been set up the methods
945 * from the [IOSink] can be used to write the actual body of the HTTP 982 * from the [IOSink] can be used to write the actual body of the HTTP
946 * request. When one of the [IOSink] methods is used for the first 983 * request. When one of the [IOSink] methods is used for the first
947 * time the request header is send. Calling any methods that will 984 * time the request header is send. Calling any methods that will
948 * change the header after it is sent will throw an exception. 985 * change the header after it is sent will throw an exception.
949 * 986 *
950 * When writing string data through the [IOSink] the 987 * When writing string data through the [IOSink] the
951 * encoding used will be determined from the "charset" parameter of 988 * encoding used will be determined from the "charset" parameter of
952 * the "Content-Type" header. 989 * the "Content-Type" header.
953 * 990 *
954 * HttpClientRequest request = ... 991 * HttpClientRequest request = ...
955 * request.headers.contentType 992 * request.headers.contentType
956 * = new ContentType("application", "json", charset: "utf-8"); 993 * = new ContentType("application", "json", charset: "utf-8");
957 * request.write(...); // Strings written will be UTF-8 encoded. 994 * request.write(...); // Strings written will be UTF-8 encoded.
958 * 995 *
959 * If no charset is provided the default of ISO-8859-1 (Latin 1) will 996 * If no charset is provided the default of ISO-8859-1 (Latin 1) will
960 * be used. 997 * be used.
961 * 998 *
962 * HttpClientRequest request = ... 999 * HttpClientRequest request = ...
963 * request.headers.add(HttpHeaders.CONTENT_TYPE, "text/plain"); 1000 * request.headers.add(HttpHeaders.CONTENT_TYPE, "text/plain");
964 * request.write(...); // Strings written will be ISO-8859-1 encoded. 1001 * request.write(...); // Strings written will be ISO-8859-1 encoded.
965 * 1002 *
966 * If an unsupported encoding is used an exception will be thrown if 1003 * If an unsupported encoding is used an exception will be thrown if
967 * using one of the write methods taking a string. 1004 * using one of the write methods taking a string.
968 */ 1005 */
969 abstract class HttpClientRequest 1006 abstract class HttpClientRequest
970 implements IOSink<HttpClientRequest> { 1007 implements IOSink<HttpClientRequest> {
971 /** 1008 /**
972 * Gets and sets the content length of the request. If the size of 1009 * Gets and sets the content length of the request. If the size of
973 * the request is not known in advance set content length to -1, 1010 * the request is not known in advance set content length to -1,
974 * which is also the default. 1011 * which is also the default.
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after
1219 class RedirectLimitExceededException extends RedirectException { 1256 class RedirectLimitExceededException extends RedirectException {
1220 const RedirectLimitExceededException(List<RedirectInfo> redirects) 1257 const RedirectLimitExceededException(List<RedirectInfo> redirects)
1221 : super("Redirect limit exceeded", redirects); 1258 : super("Redirect limit exceeded", redirects);
1222 } 1259 }
1223 1260
1224 1261
1225 class RedirectLoopException extends RedirectException { 1262 class RedirectLoopException extends RedirectException {
1226 const RedirectLoopException(List<RedirectInfo> redirects) 1263 const RedirectLoopException(List<RedirectInfo> redirects)
1227 : super("Redirect loop detected", redirects); 1264 : super("Redirect loop detected", redirects);
1228 } 1265 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698