art4/requests-psr18-adapter

Use WordPress/Requests as a PSR-18 HTTP client

Maintainers

👁 Art4

Package info

github.com/Art4/WP-Requests-PSR18-Adapter

pkg:composer/art4/requests-psr18-adapter

Statistics

Installs: 6 316

Dependents: 0

Suggesters: 1

Stars: 15

Open Issues: 2

1.4.1 2026-05-09 09:26 UTC

Requires

Requires (Dev)

Suggests

None

Conflicts

None

Replaces

None

GPL-3.0-or-later b2d5d3b4d035bbac57520e3b6c10e3f2765e7353

  • Art4 <art4.woop@wlabs.de>

httpwordpressresponserequestrequestspsrpsr-7http-messagehttp-clientpsr-18

This package is auto-updated.

Last update: 2026-06-09 10:01:54 UTC


README

👁 Latest Version
👁 Software License
👁 Build Status
👁 codecov
👁 Total Downloads

Use WordPress/Requests as a PSR-18 HTTP client adapter.

  • Requires PHP 7.2+
  • Supports Requests v1.8+ and v2

Why?

Requests is a HTTP library written in PHP, that lacks of support for PSR-7 and also for PSR-18 because of the compatability with PHP 5.6+.

I've created a PR in Requests to add PSR-7 support but this would add new direct dependencies to Requests. So I created this library as an optional wrapper for Requests. If one day Requests nativly supports PSR-7 and PSR-18, this library might become obsolete.

How to use

Installation with Composer

WordPress/Requests PSR-18 Adapter is available on Packagist and can be installed using Composer.

composer require art4/requests-psr18-adapter

If you want to use WordPress/Requests PSR-18 Adapter in context of a WordPress instance (e.g. in a plugin or theme) you should add "rmccue/requests": "*" as a replace package link. This will prevent composer from installing rmccue/requests two times, leading to fatal errors.

Example composer.json:

{
 "require": {
 "art4/requests-psr18-adapter": "^1.1"
 },
 "replace": {
 "rmccue/requests": "*"
 }
}

Examples

Take a look at the examples directory for more examples.

<?php

// First, include the Composer autoload.php
require_once dirname(__DIR__) . '/vendor/autoload.php';

// Define Requests options
$options = [
 'proxy' => '127.0.0.1:8080',
 'transport' => $customTransport,
 // other Requests options
];

// Create the HTTP client
$httpClient = new \Art4\Requests\Psr\HttpClient($options);

// Create a PSR-7 request and optional set other headers
$request = $httpClient->createRequest('GET', 'http://httpbin.org/get');
$request = $request->withHeader('Accept', 'application/json');

try {
 // Send the request
 $response = $httpClient->sendRequest($request);
} catch (\Psr\Http\Client\ClientExceptionInterface $th) {
 // Handle errors
 throw $th;
}

// Use the PSR-7 Response
var_dump($response->getBody()->__toString());