a flutter library to make HTTP requests (inspired by python requests module). It comes with JSON support and a lightweight implementation to store cookies like a browser.
Server side cookies (via response header SET-COOKIE) are stored using the assistance of shared_preferences. Stored cookies will be send seamlessly on the next http requests you make to the same domain (simple implementation, similar to a web browser)
Add this to your package's pubspec.yaml file:
dependencies: requests: ^3.3.0
Start by importing the library
import 'package:requests/requests.dart';
Let's make a simple HTTP request
var r = await Requests.get('https://google.com'); r.raiseForStatus(); String body = r.content();
just like in python's request module, the Response object has this functionallity
r.throwForStatus()- will throw an exception if the responsestatusCodeis not a great success.r.raiseForStatus()- same asthrowForStatusr.statusCode- the response status coder.url- the url in the requestr.headers- the response headersr.success- a boolean.trueindicates that the request was a great successr.hasError- a boolean.trueindicates that the request was not a great successr.bytes()- return the body in the respone as a list of bytesr.content()- return the body in the respone as a stringr.json()- recodes the body in the respone and returns the result (dynamic type)
json- adynamicobject that will be json encoded and then be set as the request's bodybody- a raw string to be used as the request's bodybodyEncoding- defaultRequestBodyEncoding.FormURLEncoded. will set thecontent-typeheaderheaders-Map<String, String>of custom client headers to add in the requesttimeoutSeconds- default10seconds. after that period of time without server response an exception is thrownpersistCookies- defaulttrue. if should respect server's command to persist cookieverify- defaulttrue. if the SSL verification enabled
π‘ Only one optional argument can be used in a single request
bodyorjson
.getHostname(url)- returns the hostname of the given url.clearStoredCookies(hostname)- clears the stored cookies for the hostname.setStoredCookies(hostname, Map<String, String>)- set the stored cookies for the hostname.getStoredCookies(hostname)- returns a Map<String, String> of the stored cookies for the hostname
HTTP post, body encoded as application/x-www-form-urlencoded, parse response as json
var r = await Requests.post( 'https://reqres.in/api/users', body: { 'userId': 10, 'id': 91, 'title': 'aut amet sed', }, bodyEncoding: RequestBodyEncoding.FormURLEncoded); r.raiseForStatus(); dynamic json = r.json(); print(json['id']);
HTTP delete
var r = await Requests.delete('https://reqres.in/api/users/10'); r.raiseForStatus();
Ignore SSL self-signed certificate
var r = await Requests.get('https://expired.badssl.com/', verify: false); r.raiseForStatus();
Play with stored cookies
String url = 'https://reqres.in/api/users/10'; String hostname = Requests.getHostname(url); await Requests.clearStoredCookies(hostname); await Requests.setStoredCookies(hostname, {'session': 'bla'}); var cookies = await Requests.getStoredCookies(hostname); expect(cookies.keys.length, 1); await Requests.clearStoredCookies(hostname); cookies = await Requests.getStoredCookies(hostname); expect(cookies.keys.length, 0);