PHPackages                             juanshu/network - 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. juanshu/network

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

juanshu/network
===============

http-tool: debug, api, curl

11PHP

Since Sep 1Pushed 6y ago1 watchersCompare

[ Source](https://github.com/tojuanshu/juanshu-network)[ Packagist](https://packagist.org/packages/juanshu/network)[ RSS](/packages/juanshu-network/feed)WikiDiscussions master Synced 5d ago

READMEChangelogDependenciesVersions (1)Used By (0)

HTTP工具包：请求调试，API客户端，网页采集
========================

[](#http工具包请求调试api客户端网页采集)

\##一、功能说明：

> 这是一个http工具包,你可以将它用作：
>
> 1. 请求调试;
> 2. API客户端；
> 3. 网页采集；

> 特点：
> 请求传值：请求头域，GET参数，POST参数，COOKIE参数，及FILE参数，或是直接发送http请求头
> 调试信息：从请求的发起到响应结束，整个过程都有完整调试信息记录。
> 超时控制：连接超时，访问超时
> 页面跟踪：301，302
> 指定连接IP: 可免去DNS对域名解析,设定多个将随机选取
> 网页解析：关键字，编码，链接

\##二、安装/删除：

> 此工具要求php5.3以上，不需要核心以外的扩展，下文使用说明是基于5.4的语法操作（主要是数组表示）
> 此工具是作为一个composer包发布，但是核心文件Http.php并不对其它文件依赖，可以将其独立出来使用

> 安装：composer require yxdj/network
> 删除：composer remove yxdj/network

\##三、使用说明($http表示请求对象) ###$http的获取:

> 方法一：`$http = new \yxdj\network\Http();`
> 方法二：`$http = \yxdj\network\Api::gethttp();  //对方法一的调用，并保持单例`

\###$http的操作:

\####发送请求：

```
//GET请求
$http->get(string $url[, array $get[, array $cookie]]);

//HEAD请求
$http->head(string $url[, array $get[, array $cookie]]);

//POST请求
$http->post(string $url[, array $get[, array $cookie[, array $file]]]);

//自定义请求
$http->request([
    //必需参数
    'url'=>'http://example.com/path/to/test.php',

    //基础参数（可选）
    'method' => 'POST',
    'row' => ['Accept-Encoding'=>'gzip, deflate',...],
    'get' => ['get_name'=>'get_value',...],
    'post' => ['post_name'=>'post_value',...],
    'cookie' => ['cookie_name'=>'cookie_value',...],
    'file' => [
                'file_name'=>['name'=>'filename','value'=>'filevalue']
                ...
              ],

    //高级参数（可选）
    'ip' => [],        //访问域名所对应主机的ip,数组表示多ip,可随机发送，设置将省去DNS解析时间
    'allow'=>[],       //可允许的响应码，为空表示所有,返回一个不允许的响应码会抛出一个可捕获的异常
    'jump'=>-1,        //302,301响应码跳转几次，-1表示不跳转
    'ctimeout' => 15,  //连接超时（s）
    'atimeout' => 15,  //访问超时（s）
    'request' =>'',    //要发送的请求，此参数设置后基础参数中的所有设定失效
]);
```

> 注意：
> 上述url参数是必需的，其它可选
> $get,$cookie,$post是名值对数组，可以是多维的
> $file，示例：\['myfile'=&gt;\['name'=&gt;'文件名字','value'=&gt;'文件内容'\],...\],
> php服务端可以通过$\_FILES\['myfile'\]获取上述文件
> get/post/head这3个方法是对rquest方法的简化，它们的返回仍是对象$http,但其中已有响应结果。
> request的具体处理过程：
>
> 1. 清除$http中上次的请求内容；
> 2. 重新写入请求配置信息和获取的响应;
> 3. 返回的$http可继续做获取响应操作

\####获取响应：

```
//debug信息，包括请求头，响应头，及具体的解析过程
//$content表示是否输出响应体
//$direct表示是否直接输出信息，默认在web模式下格式化
$http->getDebug([$content=false[, $direct=false]])

//响应码，如果是大于或等于900的响应码将是请求类自定义的
$http->getCode()

//请求头信息
$http->getRequest()

//响应头信息
$http->getResponse()

//响应主体
$http->getContent()

//html关键字（如果能解析到）
$http->getKeyword()

//响应的编码（如果能解析到）
$http->getCharset()

//响应体中a标签的链接（如果能解析到）
$http->a()

//响应体中img标签的链接（如果能解析到）
$http->img()

//是否请求超时
$http->isTimeout()
```

\##四、使用示例:

\###GET请求

```
$http = Api::getHttp()->get('http://php.net');

//(output)PHP: Hypertext Preprocessor
echo $http->getKeyword();

//(output)utf-8
echo $http->getCharset();
```

\###自定义请求

```
//server: http://test/test.php
