PHPackages                             hehex/hehep-hclient - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [HTTP &amp; Networking](/categories/http)
4. /
5. hehex/hehep-hclient

ActiveLibrary[HTTP &amp; Networking](/categories/http)

hehex/hehep-hclient
===================

hehep-hclient 是一个PHP客户端工具组件

v1.0.0(1y ago)014Apache-2.0PHPPHP &gt;=7.1

Since Jun 18Pushed 10mo ago1 watchersCompare

[ Source](https://github.com/chinahehex/hehep-hclient)[ Packagist](https://packagist.org/packages/hehex/hehep-hclient)[ RSS](/packages/hehex-hehep-hclient/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependenciesVersions (2)Used By (0)

hehep-hclient
=============

[](#hehep-hclient)

介绍
--

[](#介绍)

- hehep-hclient 是一个PHP客户端工具组件

安装
--

[](#安装)

- **gitee下载**:

```
git clone git@gitee.com:chinahehex/hehep-hclient.git

```

- **github下载**:

```
git clone git@github.com:chinahehex/hehep-hclient.git

```

- 命令安装：

```
composer require hehex/hehep-hclient

```

组件配置
----

[](#组件配置)

- 基础配置

```
$config = [
    //'class'=>'hclient\Client',// 客户端管理器
    // 默认传输器
    'transport'=>'curl',// 目前提供curl,socket,stream 三种传输方式,

    // request 对象格式对象
    'formatters'=>[
        'json'=>'json',
        'xml'=>'xml',
        'none'=>'none'
    ],

    // response 对象格式对象
    'parsers'=>[
        'json'=>'json',
        'xml'=>'xml',
        'none'=>'none'
    ],
    // 自定义站点信息
    'sites'=>[

        'api'=>[
            // 请求类相关属性
            'class'=>'hclient\base\Request',
            'baseUrl'=>'http://xxxx.xxxx.cn/',// 站点域名或地址
            'method'=>'POST',// http 方法
            'protocol'=>'',// 请求协议,比如http,一般配置socket使用
            'format'=>'json',// 格式化名称
            'options'=>[],// 传输协议参数
            'response'=>[
                // 响应类相关属性
                'class'=>'hclient\extend\ApiResponse',
                'protocol'=>'',// 请求协议,比如http,一般配置socket使用
                'format'=>'json',// 格式化名称
            ],
        ],
        'sina'=>[
            'baseUrl'=>'http://blog.sina.com.cn/',
            'method'=>'GET'
        ],
        'baidu'=>[
            'baseUrl'=>'http://www.thinkphp.cn/',
            'method'=>'GET'
        ]
    ],
];
```

基本示例
----

[](#基本示例)

> 普通请求 GET HTTP 请求,支持OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT

```
use hclient\Client;
$hclient = new Client();

// 发送get 请求
$html = $hclient->get("http://www.baidu.com/")->send()->getContent();

// 设置请求参数
$html = $hclient->get("http://www.baidu.com/",['id'=>1])->send()->getContent();

// 简写方式
$html = $hclient->getResult("http://www.baidu.com/",['id'=>1]);

// 发送post 请求
$html = $hclient->post("http://www.baidu.com/",['id'=>1])->send()->getContent();
// 简写方式
$html = $hclient->postResult("http://www.baidu.com/",['id'=>1]);

// 其他请求method
$html = $hclient->xxxResult("http://www.baidu.com/",['id'=>1]);
```

api 请求
------

[](#api-请求)

### 配置

[](#配置)

```
$config = [
    // 自定义站点信息
    'sites'=>[
        'orderapi'=>[
            // 请求类相关属性
            'class'=>'hclient\base\Request',
            'baseUrl'=>'http://xxxx.xxxx.cn/',// 站点域名或地址
            'method'=>'POST',// http 方法
            'protocol'=>'',// 请求协议,比如http,一般配置socket使用
            'format'=>'',// 格式化名称,json
            'response'=>[
                'class'=>'hclient\extend\ApiResponse',// 定义响应类
                'protocol'=>'',// 请求协议,比如http,一般配置socket使用
                'format'=>'json',// 格式化名称,
                'varCode'=>'code',// 业务状态码字段名称,
                'varMsg'=>'message',// 业务提示信息字段名称,
                'varResult'=>'data',//  业务数据字段名称,
                'succCode'=>200,// 业务状态码成功值,
            ],
        ],
    ],
];
```

### 基本示例

[](#基本示例-1)

```
use hclient\Client;
$hclient = new Client();
$response = $hclient->api('orderapi','product/add',['name'=>'商品','price'=>10.2,'stock'=>100]);
$response = $hclient->site('orderapi')->api('product/add',['name'=>'商品','price'=>10.2,'stock'=>100]);
$response = $hclient->orderapi->api('product/add',['name'=>'商品','price'=>10.2,'stock'=>100]);

// 判断请求是否成功,业务状态码是否正确
$response->isOk();

// 自定义状态码
$response->isOk(2000);

// 获取业务提示消息
$response->getMessage();

// 获取业务数据
$response->getResult();

// 获取业务状态码
$response->getErrorCode();
```

站点请求
----

[](#站点请求)

### 添加站点

[](#添加站点)

```
use hclient\Client;
$hclient = new Client();

// 添加站点
$hclient->addSite('sina',[
    'baseUrl'=>'https://sports.sina.com.cn/',
    'method'=>'GET'
]);

$response = $hclient->uri("sina","system/site/siteInit",['id'=>1])->send();
// 获取返回的原始内容
$content = $response->getContent();

// 获取格式化后的内容
$data = $response->setFormat("json")->getData();

// 直接获取格式化后数据
$data = $hclient->uriResult("sina","system/site/siteInit",['id'=>1]);
```

### post,get请求

[](#postget请求)

```
use hclient\Client;
$hclient = new Client();
$hclient->site('baidu')->get('system/site/siteInit');
$hclient->site('baidu')->post('system/site/siteInit',['id'=>1]);
$hclient->site('baidu')->getResult('system/site/siteInit');
$hclient->site('baidu')->postResult('system/site/siteInit',['id'=>1]);
```

### 创建预定义站点

[](#创建预定义站点)

```
use hclient\Client;
$hclient = new Client();
$response = $hclient->site('baidu')
    ->uri('system/site/siteInit',['id'=>1])
    ->send();
```

### 创建全新站点

[](#创建全新站点)

```
use hclient\Client;
$hclient = new Client();
$response = $hclient->site()
    ->setBaseUrl('https://sports.sina.com.cn/')
    ->uri('system/site/siteInit',['id'=>1])
    ->send();
```

批量请求
----

[](#批量请求)

### 基础示例

[](#基础示例)

```
use hclient\Client;
$hclient = new Client();

// 方式1
$reqeusts = [
    'reqeust1'=>$hclient->uri("md","system/site/siteInit",['id'=>1]),
    'reqeust2'=>$hclient->uri("md","system/site/siteInit",['id'=>2]),
];

$responses = $hclient->batchSend($reqeusts);
$content = $responses['reqeust1']->getContent();
$content = $responses['reqeust2']->getContent();

// 方式2
$reqeusts = [
    $hclient->uri("md","system/site/siteInit",['id'=>1])->setIndex('reqeust1'),
    $hclient->uri("md","system/site/siteInit",['id'=>2])->setIndex('reqeust2'),
];

$responses = $hclient->batchSend($reqeusts);
$content = $responses['reqeust1']->getContent();
$content = $responses['reqeust2']->getContent();
```

### 创建请求组

[](#创建请求组)

```
use hclient\Client;
$hclient = new Client();

$requestGroup = $hclient->batch();
$requestGroup->getResult('http://www.baidu.com')->setIndex("reqeust1");
$requestGroup->getResult('http://www.baidu.com')->setIndex("reqeust2");
$res_result = $requestGroup->send();
$res_result['reqeust1'];
$res_result['reqeust2'];

$requestGroup = $hclient->batch();
$requestGroup->get('http://www.baidu.com')->setIndex("reqeust1");
$requestGroup->getResult('http://www.baidu.com')->setIndex("reqeust2");
$res_result = $requestGroup->send();
$res_result['reqeust1'];
$res_result['reqeust2'];

// reqeust1 返回的结果是response 对象
$response = $res_result['reqeust1'];
$html = $res_result['reqeust2'];
```

设置参数
----

[](#设置参数)

### 设置格式化

[](#设置格式化)

```
目前支持三种数据格式化,分别为
json,xml,none(无)

```

- 注册格式化

```
use hclient\Client;
$hclient = new Client();
$hclient->registerFormat('json','hclient\formatters\JsonFormatter');
$hclient->registerParser('json','hclient\formatters\JsonParser');
```

- 设置请求格式化

```
use hclient\Client;
$hclient = new Client();
// $request_data json 编码后传输
$request_data = ['id'=>1];
$response = $hclient->post('http://www.baidu.com',$request_data)->setFormat('json')->send();

// 对返回结果json 解码
$data = $response->setFormat('json')->getData();
```

### 设置头部信息

[](#设置头部信息)

- 设置headers信息

```
use hclient\Client;
$hclient = new Client();
$reqeust = $hclient->uri("md","system/site/siteInit",['id'=>1]);
$reqeust->addHeaders([
    'c'=>1,
    'n'=>time(),
]);
```

- 设置cookies

```
use hclient\Client;
$hclient = new Client();
$reqeust = $hclient->uri("md","system/site/siteInit",['id'=>1]);
$reqeust->addCookie([
    "name"=>"ok",// cookie 名称
    'value'=>"12121",// cookie 值
    "expire"=>60 * 30,// cookie 有效期
]);

$reqeust->setCookie("ok","value",60 * 30);
```

- 设置Method

```
use hclient\Client;
$hclient = new Client();
$reqeust = $hclient->uri("md","system/site/siteInit",['id'=>1]);

// 设置http method
$reqeust->setMethod("post");
$reqeust->setMethod("get");
```

### 设置传输器

[](#设置传输器)

```
目前支持三种传输器,分别为
curl,socket,stream

```

- 注册传输器

```
use hclient\Client;
$hclient = new Client();

$hclient->registerTransport('curl','hclient\transports\CurlTransport');
```

- 设置全局默认传输器

```
use hclient\Client;
$hclient = new Client();
$hclient->setTransport('curl');
```

- 设置请求传输器

```
use hclient\Client;
$hclient = new Client();
$hclient->post('http://www.baidu.com')->setTransport('curl')->send();
```

- 设置传输器相关参数

```
use hclient\Client;
$hclient = new Client();
$reqeust = $hclient->uri("md","system/site/siteInit",['id'=>1]);

// 设置传输协议相关参数
$reqeust->setTransportOptions([
    CURLOPT_RETURNTRANSFER=>true,
    CURLOPT_POST=>'POST'
]);
```

错误处理
----

[](#错误处理)

- 验证请求错误信息

```
use hclient\Client;
$hclient = new Client();
$reqeust = $hclient->uri("md","system/site/siteInit",['id'=>1]);
$response = $reqeust->send();

// 验证是否错误(验证网络,解析数据,Transport（传输层） 是否有错误)
if ($response->hasError()) {
    echo "error";
} else {
    echo "succeed";
}

// 验证是否网络错误(主要验证header http-code 状态码 是否等于20x)
if ($response->hasNetworkError()) {
    echo "error";
} else {
    echo "succeed";
}

// 获取错误信息
$response->getError();
```

自定义格式化
------

[](#自定义格式化)

```
目前支持三种json,xml,none(无须序列化)

```

- 自定义序列化类

```
namespace hclient\formatters;

use hclient\base\Request;

class JsonFormatter implements FormatterInterface
{

    // 实现此方法
    public function format(Request $request):void
    {
        $request->getHeaders()->set('Content-Type', 'application/json; charset=UTF-8');
        $request->setContent(json_encode($request->getData()));
    }
}
```

- 自定义反序列化类

```
namespace hclient\formatters;
use hclient\base\Response;

/**
 * Response json 反序列化
 *说明：
 *
 * 略
 *
 */
class JsonParser implements ParserInterface
{
    // 实现此方法
    public function parse(Response $response):void
    {
        $response->setData(json_decode((string) $response->getContent(), true));
    }
}
```

自定义传输器
------

[](#自定义传输器)

```
目前支持三种curl,socket,stream

```

- 自定义传输协议类

```
namespace  hclient\transports;
use hclient\base\Request;

class StreamTransport extends Transport
{
    // 实现此方法
    public function send(Request $request)
    {
        // 发送单个请求

        return $request;
    }

    // 扩展此方法
    public function batchSend(array $requests)
    {
        // 批量发送多个请求
    }

}
```

任务列表
----

[](#任务列表)

- 增加协议mqtt
- 增加异步
- 增加连接池

###  Health Score

24

—

LowBetter than 32% of packages

Maintenance44

Moderate activity, may be stable

Popularity6

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity35

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

692d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/fef1cea3ff1614a44fc4060212c8e03e14511610ae5482351a80a3b9f6d28e97?d=identicon)[chinahehex](/maintainers/chinahehex)

---

Top Contributors

[![139hehe](https://avatars.githubusercontent.com/u/42648391?v=4)](https://github.com/139hehe "139hehe (14 commits)")

---

Tags

clientcurlhttpclientphpsocket

### Embed Badge

![Health badge](/badges/hehex-hehep-hclient/health.svg)

```
[![Health](https://phpackages.com/badges/hehex-hehep-hclient/health.svg)](https://phpackages.com/packages/hehex-hehep-hclient)
```

###  Alternatives

[friendsofsymfony/rest-bundle

This Bundle provides various tools to rapidly develop RESTful API's with Symfony

2.8k73.3M319](/packages/friendsofsymfony-rest-bundle)[php-http/discovery

Finds and installs PSR-7, PSR-17, PSR-18 and HTTPlug implementations

1.3k309.5M1.2k](/packages/php-http-discovery)[nyholm/psr7

A fast PHP7 implementation of PSR-7

1.3k235.4M2.4k](/packages/nyholm-psr7)[pusher/pusher-php-server

Library for interacting with the Pusher REST API

1.5k94.8M293](/packages/pusher-pusher-php-server)[spatie/crawler

Crawl all internal links found on a website

2.8k16.3M52](/packages/spatie-crawler)[react/http

Event-driven, streaming HTTP client and server implementation for ReactPHP

78126.4M414](/packages/react-http)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
