amsify42/php-curl-http

这是一个用于发送curl HTTP请求并获取响应的PHP包

1.0 2021-09-03 14:41 UTC

This package is not auto-updated.

Last update: 2024-09-28 10:14:32 UTC


README

这是一个通过cURL发送http请求并获取响应的PHP包。

安装

$ composer require amsify42/php-curl-http

目录

  1. 初始化
  2. 请求
  3. 响应

1. 初始化

要创建cURL HTTP请求,我们可以通过传递URL给它来实现。

$curlHttp = new Amsify42\CurlHttp\CurlHttp('http://www.sample.com/users');

或者使用辅助方法

$curlHttp = get_curl_http('http://www.sample.com/users');

2. 请求

如果请求方法不是类型GET,我们可以通过CurlHtpp实例传递这个参数

$curlHttp = new Amsify42\CurlHttp\CurlHttp('http://www.sample.com/user/create');
$curlHttp->setRequestMethod('POST');
$curlHttp->setRequestData(['name' => 'test', 'salary' => 123]);

或者通过Amsify42\CurlHtpp\Request实例

$curlRequest = new Amsify42\CurlHtpp\Request();
$curlRequest->setMethod('POST');
/**
 * Set one of the header as Content-Type: application/json if you want to pass bodyData as json
 */
$curlRequest->setHeaders(['Content-Type: application/json']);
$curlRequest->setData(['name' => 'test', 'salary' => 123]);

$curlHttp = new Amsify42\CurlHttp\CurlHttp('http://www.sample.com/user/create', $curlRequest);

使用Amsify42\CurlHtpp\Request我们也可以调用这些方法。

$curlRequest->setMethod('PUT');
$curlRequest->setHeaders(['Authorization: Bearer sf23rsdf23fds']);
/**
 * Set request ContentType as json if you want to pass bodyData as json
 */
$curlRequest->setContenType('json');
$curlRequest->setData(['name' => 'test', 'salary' => 123]);

如果您不想传递header或contentType为json,可以简单地传递json编码的请求数据

$curlRequest->setData(json_encode(['name' => 'test', 'salary' => 123]));

对于header,您也可以传递键值对形式的数组项

$curlRequest->setHeaders(['Authorization' => 'Bearer sf23rsdf23fds']);

3. 响应

通过CurlHttp执行cURL后,我们将获得类型为Amsify42\CurlHttp\Response的响应

$curlHttp = get_curl_http('http://www.sample.com/users');
$response = $curlHttp->execute();

我们可以使用这些方法来调用响应

/* To get the response code */
$response->getCode();
/* To get the response body data */
$response->getBodyData();
/* To get the response headers as array */
$response->getHeaders();
/* To get the json decoded data of response */
$response->json();

对于执行不同的方法,如GET、POST、PUT和DELETE,您也可以调用这些方法以单次调用获取响应。

$response = CurlHttp::get('https://www.somsite.com/users');
$response = CurlHttp::post('https://www.somsite.com/user/create', ['name' => 'dummy'], ['Authorization: Bearer sdf23rsdf23'], 'json');
$response = CurlHttp::put('https://www.somsite.com/user/2', ['name' => 'dummy...edited'], ['Authorization: Bearer sdf23rsdf23'], 'json');
$response = CurlHttp::delete('https://www.somsite.com/user/2', ['Authorization: Basic sdf23rsdf23']);

方法post()put()delete()期望三个可选参数

data - expects data array or defaults to NULL
headers - expects headers array or defaults to NULL
contentType - expects either string 'json' or defaults to NULL

对于json请求数据,您也可以将这些方法的contentType参数传递为json,或者传递一个header作为Content-Type: application/json

$response = CurlHttp::post('https://www.somsite.com/user/create', ['name' => 'dummy'], ['Authorization: Bearer sdf23rsdf23', 'Content-Type: application/json']);

或者您可以直接传递json编码的请求数据

$response = CurlHttp::post('https://www.somsite.com/user/create', json_encode(['name' => 'dummy']), ['Authorization: Bearer sdf23rsdf23']);