codememory/screw

发送 Http 请求的组件

v2.0 2021-02-01 14:57 UTC

This package is auto-updated.

Last update: 2024-09-29 05:49:51 UTC


README

HTTP Screw - 这是 Guzzle 包的接口,使用面向对象的方法简化请求的创建

License Code Size Packagist

安装

composer require codememory/http-screw

文档

请求方法

  • baseUrl(): HttpRequest 向客户端添加 URL。然后在 setUrl() 中可以直接传递链接

    • string $url (default: null)

  • setUrl(): HttpRequest 添加要请求的 URL

    • string $url (default: null)

  • addPort(): HttpRequest 向 URL 添加端口

    • integer $port (default: null)

  • setMethod(): HttpRequest 请求方法 [ GET|POST|PUT|DELETE|UPDATE ]

    • string $method (default: GET)

  • clientOptions(): HttpRequest 下一个指定的选项将添加到客户端。这些选项将成为默认选项

    • boolean $status (default: false)

  • option(): HttpRequest 向请求添加选项

    • string $option (default: null)

    • callable $callback (default: None): $option

      • object $option (default: $option)

  • processResponseCode(): HttpRequest 处理 HTTP 状态码

    • callable $callback (default: None)

      • Response $response (default: $response)

    • integer $code (default: 200)

  • refuser(): HttpRequest 处理请求错误。这可能包括连接错误等

    • callable $callback (default: None)

      • RequestException $e (default: $e)

  • addBody(): HttpRequest 发送 Body

    • string $body (default: None)

  • addJson(): HttpRequest 将数据以 JSON 编码作为请求体加载。如果消息中已存在 Content-Type 头,则不会添加 Content-Type: application/json 头

    • mixed $data (default: None)

  • saveBody(): HttpRequest 添加存储响应体路径的位置

  • send(): HttpRequest 方法向指定的 URL 发送请求

  • response(): GuzzleResponse 返回 Guzzle 响应包

选项及其组件

重定向

> HttpRequest::O_REDIRECT
  • redirect() 允许重定向

    • boolean $performRedirects (default: false)

  • numberRedirects() 重定向次数

    • integer $redirects (default: 5)

  • strictRedirect() 精确重定向

    • boolean $strictly (default: false)

  • addRefererOnRedirect() 允许在发现重定向时添加 referer 头

    • boolean $allowDispatch (default: true)

  • redirectHandler() 发现重定向时的处理器

    • object|callable $allowDispatch (default: null)

  • allowProtocols() 添加允许的协议

    • string ...$args (default: [http, https])

认证

> HttpRequest::O_AUTH
  • username() 用户名

    • string|integer $username (default: null)

  • password() 用户密码

    • string|integer $password (default: null)

  • type() 认证类型 [basic, digest, ntlm]

    • string $type (default: null)

  • disable() 禁用认证

    • 无(默认:true(开))

  • enable() 启用身份验证

    • 无(默认:true(开))

超时(秒)

> HttpRequest::O_TIMEOUT
  • connectionTime() 连接到服务器的时间

    • 整数|浮点数 $time (默认:0)

  • requestTime() 请求时间

    • 整数|浮点数 $time (默认:0)

  • readTime() 读取流式内容时使用的时间

    • 整数|浮点数 $time (默认:php.ini中的default_socket_timeout)

SSL证书

> HttpRequest::O_SSL
  • certificate() 包含PEM格式证书的文件的路径

    • 字符串 $pathCertificate (默认:None)

    • 字符串|null $password (默认:null)

  • key() 包含PEM格式SSL私钥的文件的路径

    • 字符串 $pathCertificate (默认:None)

    • 字符串|null $password (默认:null)

  • verify() 启用SSL检查或设置磁盘上自定义证书的路径

    • 布尔型|string $pathOrStatus (默认:true)

代理

> HttpRequest::O_PROXY
  • setProxy() 添加具有特定协议的代理

    • 字符串 $proxy (默认:null) - 代理URL地址

    • 字符串|null $protocol (默认:None) - 代理协议

  • username() 用户名

    • 字符串 $username (默认:None) - 带用户名示例 [http://username:password@127.0.0.1:80]

  • password() 用户密码

    • 字符串 $password (默认:None)

  • setUser() 合并username()password()方法

    • 字符串 $username (默认:None)

    • 字符串 $password (默认:None)

    • 布尔型 $forAllAddresses (默认:false) - 添加到所有后续URL地址用户名密码

  • preventProxy() 添加不应代理的域名

    • 字符串 ...$args (默认:None)

参数

HttpRequest::O_PARAMS

  • form() 如果请求方法为POST,则传递POST数据

    • 数组 $data (默认:None)

  • query() 如果请求方法为GET,则传递GET数据

    • 数组 $data (默认:None)

  • withFiles(): ParamsOption 发送文件。 不与form()方法一起使用

    • 字符串 $inputName (默认:None)

    • 混合 NOT null $contents (默认:None) - 用于表单元素的数

    • ?string $filename (默认:Null)

    • ?array $headers (默认:[])

头部

HttpRequest::O_HEADERS

  • decodeContent(): HeadersOption 指定是否将响应的Content-Encoding(gzip,deflate等)自动解码。
    • 字符串|布尔型 $decode (默认:true)

  • header() 添加头部
    • 字符串 $name (默认:None)

    • 混合 $value (默认:None)

  • onHeaders() 当HTTP头部响应被接收但内容尚未开始下载时调用的对象。
    • callable $callback (default: None)

      • Response $response (默认:Response)

  • expect() 控制头部“Expect: 100-Continue”的行为。
    • 整数|布尔型 $rule (默认:1048576)

Http

HttpRequest::O_HTTP

  • setVersion() 设置协议版本
    • 整数|浮点数 $version (默认:1.1)

  • stream() 设置流式传输响应,而不是立即加载
    • boolean $status (default: false)

  • idnConversion() 支持国际化域名(IDN)(如果int
    • 整数|布尔型 $support (默认:true或false)

  • httpExceptions() 根据HTTP-code抛出异常
    • 布尔型 $status (默认:true)

  • ipVersion() 设置IP版本
    • 字符串 $version (默认:None)

  • stats() 允许访问请求的统计信息以及访问与您的客户端关联的底层传输处理器的详细信息。
    • callable $callback (default: None)

      • TransferStats $stats (默认:TransferStats)

  • sync() 通知HTTP处理程序您将等待响应。这可能有助于优化
    • 布尔型 $status (默认:None)

进度

HttpRequest::O_PROGRESS

  • progress() 定义在传输执行时调用的函数。
    • callable $callback (default: None)

      • 整数 $downloadTotal (默认: 0) - 期望下载的总字节数,如果未知则为零

      • 整数 $downloadedBytes (默认: 0) - 目前已下载的字节数

      • 整数 $uploadTotal (默认: 0) - 应下载的总字节数

      • 整数 $uploadedBytes (默认: 0) - 目前已上传的字节数

响应方法

  • responseType() 将响应体转换为类型

    • 整数 $type (默认: String(4))
      Response::RESPONSE_JSON
      Response::RESPONSE_ARRAY
      Response::RESPONSE_OBJECT
      Response::RESPONSE_STRING

  • getBody() 获取响应体

  • getHttpCode() 获取 HTTP-代码

  • getResponseGuzzle(): GuzzleResponse 返回 GuzzleResponse 类对象

  • __call()GuzzleResponse 对象调用其他方法 更多信息

发送请求

 use Codememory\Screw\HttpRequest;

 $httpRequest = new HttpRequest();
 
 $response = $httpRequest
        ->setUrl('http://example.com/') // Url запроса
        ->setMethod('GET') // Метод запроса
        ->send();

带选项的请求

 $httpRequest
    ->setUrl('http://example.com/')
    ->setMethod('GET')
    ->option(HttpRequest::O_REDIRECT, function(RedirectOption $redirect):  RedirectOption {
        $redirect
            ->redirect(true);
        
        return $redirect;
    })
    ->send();

使用多个选项及其组件的示例

 $httpRequest
    ->setUrl('http://example.com/')
    ->setMethod('GET')
    ->option(HttpRequest::O_REDIRECT, function(RedirectOption $redirect): RedirectOption {
        $redirect
            ->redirect(true)
            ->allowProtocols('http'); 
            
        return $redirect;
    })
    ->option(HttpRequest::TIMEOUT, function(TimeoutOption $timeout): TimeoutOption {
        $timeout
            ->delay(4)
            ->requestTime(5);
         
        return $timeout;
    })
    ->send();