http 0.11.1+1

http

A composable, Future-based library for making HTTP requests.

This package contains a set of high-level functions and classes that make it easy to consume HTTP resources. It's platform-independent, and can be used on both the command-line and the browser. Currently the global utility functions are unsupported on the browser; see "Using on the Browser" below.

Using

The easiest way to use this library is via the top-level functions, although they currently only work on platforms where dart:io is available. They allow you to make individual HTTP requests with minimal hassle:

import 'package:http/http.dart' as http;

var url = "http://example.com/whatsit/create";
http.post(url, body: {"name": "doodle", "color": "blue"})
    .then((response) {
  print("Response status: ${response.statusCode}");
  print("Response body: ${response.body}");
});

http.read("http://example.com/foobar.txt").then(print);

If you're making multiple requests to the same server, you can keep open a persistent connection by using a Client rather than making one-off requests. If you do this, make sure to close the client when you're done:

var client = new http.Client();
client.post(
    "http://example.com/whatsit/create",
    body: {"name": "doodle", "color": "blue"})
  .then((response) => client.get(response.bodyFields['uri']))
  .then((response) => print(response.body))
  .whenComplete(client.close);

You can also exert more fine-grained control over your requests and responses by creating Request or StreamedRequest objects yourself and passing them to Client.send.

This package is designed to be composable. This makes it easy for external libraries to work with one another to add behavior to it. Libraries wishing to add behavior should create a subclass of BaseClient that wraps another Client and adds the desired behavior:

class UserAgentClient extends http.BaseClient {
  final String userAgent;
  final http.Client _inner;

  UserAgentClient(this.userAgent, this._inner);

  Future<StreamedResponse> send(BaseRequest request) {
    request.headers['user-agent'] = userAgent;
    return _inner.send(request);
  }
}

Using on the Browser

The HTTP library can be used on the browser via the [BrowserClient][] class in package:http/browser_client.dart. This client translates requests into XMLHttpRequests. For example:

import 'package:http/browser_client.dart';
import 'package:http/http.dart' as http;

var client = new BrowserClient();
var url = "/whatsit/create";
client.post(url, body: {"name": "doodle", "color": "blue"})
    .then((response) {
  print("Response status: ${response.statusCode}");
  print("Response body: ${response.body}");
});

Filing issues

Please file issues for the http package at http://dartbug.com/new.

0.11.1+1

  • Widen the version constraint for stack_trace.

0.11.1

  • Expose the IOClient class which wraps a dart:io HttpClient.

0.11.0+1

  • Fix a bug in handling errors in decoding XMLHttpRequest responses for BrowserClient.

0.11.0

  • The package no longer depends on dart:io. The BrowserClient class in package:http/browser_client.dart can now be used to make requests on the browser.

  • Change MultipartFile.contentType from dart:io's ContentType type to http_parser's MediaType type.

  • Exceptions are now of type ClientException rather than dart:io's HttpException.

0.10.0

  • Make BaseRequest.contentLength and BaseResponse.contentLength use null to indicate an unknown content length rather than -1.

  • The contentLength parameter to new BaseResponse is now named rather than positional.

  • Make request headers case-insensitive.

  • Make MultipartRequest more closely adhere to browsers' encoding conventions.

1. Depend on it

Add this to your package's pubspec.yaml file:

dependencies:
  http: ">=0.11.1+1 <0.12.0"

If your package is an application package you should use any as the version constraint.

2. Install it

If you're using the Dart Editor, choose:

Menu > Tools > Pub Install

Or if you want to install from the command line, run:

$ pub install

3. Import it

Now in your Dart code, you can use:

import 'package:http/http.dart';

About

A composable, Future-based API for making HTTP requests.

Author

Email misc@dartlang.org Dart Team

Homepage

pub.dartlang.org/packages/http

Documentation

www.dartdocs.org/documentation/http/0.11...

Uploader

dgrove@google.com
jmesserly@google.com
sigmund@google.com
nweiz@google.com
kevmoo@google.com

Share