amsify42/ php-curl-http
这是一个用于发送curl HTTP请求并获取响应的PHP包
1.0
2021-09-03 14:41 UTC
Requires
- php: >=7.0.0
- amsify42/php-vars-data: dev-master
Requires (Dev)
- amsify42/php-vars-data: dev-master
- phpunit/phpunit: ^7.0
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. 初始化
要创建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']);