Skip to content

faradayvshttpclient

MIT 60 8 5,927
5.9 million (month) Dec 19 2009 2.14.1(2026-02-07 15:17:15 ago)
707 5 96 ruby
Jul 25 2009 2.6 million (month) 2.9.0(2025-02-22 01:13:49 ago)

Faraday is a Ruby gem that provides a simple and flexible interface for making HTTP requests. It allows you to create a Faraday connection object, which you can use to send requests and receive responses.

Faraday abstracts away the details of the underlying HTTP client library, so you can use it with different libraries such as Net::HTTP, HTTPClient, typhoeus and others.

Since Faraday can adapt many other HTTP clients it's very popular choice in web scraping.

HTTPClient is a Ruby gem that provides a simple and flexible interface for making HTTP requests. It's a full-featured HTTP client library with support for cookies, redirects, proxy, and more. It's built on top of the libwww-perl library, which is a widely-used, robust and well-documented library.

Features:

  • methods like GET/HEAD/POST/* via HTTP/1.1.
  • HTTPS(SSL), Cookies, proxy, authentication(Digest, NTLM, Basic), etc.
  • asynchronous HTTP request, streaming HTTP request.
  • debug mode CLI.
  • by contrast with net/http in standard distribution;
  • Cookies support
  • MT-safe
  • streaming POST (POST with File/IO)
  • Digest auth
  • Negotiate/NTLM auth for WWW-Authenticate (requires net/ntlm module; rubyntlm gem)
  • NTLM auth for Proxy-Authenticate (requires 'win32/sspi' module; rubysspi gem)
  • extensible with filter interface
  • you don't have to care HTTP/1.1 persistent connection (httpclient cares instead of you)

Example Use


```ruby # GET requests response = Faraday.get('http://httpbingo.org') put response.status put response.headers put response.body # or use a persistent client session: conn = Faraday.new( url: 'http://httpbin.org/get', params: {param: '1'}, headers: {'Content-Type' => 'application/json'} ) # POST requests response = conn.post('/post') do |req| req.params['limit'] = 100 req.body = {query: 'chunky bacon'}.to_json end ```
```ruby require 'httpclient' client = HTTPClient.new # GET requests response = client.get("http://httpbin.org/get") puts response.content # POST requests data = { name: "value" } response = client.post("http://httpbin.org/post", data) puts response.content ```

Alternatives / Similar


Was this page helpful?