Skip to content

httrvshttp-2

MIT 10 9 985
1.2 million (month) May 06 2012 1.4.8(2023-08-15 11:00:00 ago)
908 6 2 MIT
Sep 25 2013 183.8 thousand (month) 1.1.3(2026-03-05 00:04:35 ago)

The aim of httr is to provide a wrapper for the curl package, customised to the demands of modern web APIs.

Key features:

  • Functions for the most important http verbs: GET(), HEAD(), PATCH(), PUT(), DELETE() and POST().
  • Automatic connection sharing across requests to the same website (by default, curl handles are managed automatically), cookies are maintained across requests, and a up-to-date root-level SSL certificate store is used.
  • Requests return a standard reponse object that captures the http status line, headers and body, along with other useful information.
  • Response content is available with content() as a raw vector (as = "raw"), a character vector (as = "text"), or parsed into an R object (as = "parsed"), currently for html, xml, json, png and jpeg.
  • You can convert http errors into R errors with stop_for_status().
  • Config functions make it easier to modify the request in common ways: set_cookies(), add_headers(), authenticate(), use_proxy(), verbose(), timeout(), content_type(), accept(), progress().
  • Support for OAuth 1.0 and 2.0 with oauth1.0_token() and oauth2.0_token(). The demo directory has eight OAuth demos: four for 1.0 (twitter, vimeo, withings and yahoo) and four for 2.0 (facebook, github, google, linkedin). OAuth credentials are automatically cached within a project.

Pure Ruby, framework and transport agnostic, implementation of HTTP/2 protocol and HPACK header compression with support for:

  • Binary framing parsing and encoding
  • Stream multiplexing and prioritization
  • Connection and stream flow control
  • Header compression and server push
  • Connection and stream management
  • And more... see API docs

Protocol specifications:

  • Hypertext Transfer Protocol Version 2 (RFC 7540)
  • HPACK: Header Compression for HTTP/2 (RFC 7541)

Highlights


http2

Example Use


```r library(httr) # GET requests: resp <- GET("http://httpbin.org/get") status_code(resp) # status code headers(resp) # headers str(content(resp)) # body # POST requests: # Form encoded resp <- POST(url, body = body, encode = "form") # Multipart encoded resp <- POST(url, body = body, encode = "multipart") # JSON encoded resp <- POST(url, body = body, encode = "json") # setting cookies: resp <- GET("http://httpbin.org/cookies", set_cookies("MeWant" = "cookies")) content(r)$cookies # get response cookies ```
```ruby require 'http/2' # GET request client = HTTP2::Client.new response = client.get("https://httpbin.org/get") puts response.body # POST reuqest data = { name: "value" } response = client.post("https://www.example.com", data) ```

Alternatives / Similar


Was this page helpful?