kajna/purli

轻量级库,具有面向对象接口,用于发送HTTP请求

1.0.0 2017-11-08 00:29 UTC

This package is auto-updated.

Last update: 2024-09-18 12:59:36 UTC


README

DUB Version

Purli (PHP URL接口) 是一个轻量级库,具有面向对象接口,用于发送HTTP请求。

安装

该包通过 Composer 提供

{
  "require": {
    "kajna/purli": "dev-master"
  }
}

使用示例

使用GET方法和CURL处理器获取数据

最小示例,Purli默认使用CURL处理器(如果可用),否则回退到socket。

try {
    $purli = (new \Purli\Purli())
        ->get('http://www.example.com')
        ->close();

    $response = $purli->response();

    echo $response->asText();
} catch(\Exception $e) {
    echo $e->getMessage();
}

使用GET方法和socket处理器获取数据

如果显式设置,Purli将使用PHP sockets进行请求,无论是否安装了CURL。

try {
    $purli = (new \Purli\Purli(\Purli\Purli::SOCKET))
            ->get('http://example.com')
            ->close();
    
    $response = $purli->response();
    
    echo $response->asText();
} catch(\Exception $e) {
	echo $e->getMessage();
}

使用POST方法获取数据

try {
    $data = array('foo' => 'bar');

    $purli = (new \Purli\Purli())
        ->setParams($data)
        ->post('http://www.example.com')
        ->close();

    $response = $purli->response();

    print_r($response->asText());
} catch(\Exception $e) {
    echo $e->getMessage();
}

使用POST方法发送和接收XML数据

try {
    $data = '<root><foo>bar</foo></root>';

    $purli = (new \Purli\Purli())
        ->setUserAgent('curl 7.16.1 (i386-portbld-freebsd6.2) libcurl/7.16.1 OpenSSL/0.9.7m zlib/1.2.3')
        ->setHeader('Content-Type', 'text/xml')
        ->setParams($data)
        ->post('http://www.example.com')
        ->close();

    $response = $purli->response();

    print_r($response->asArray());
} catch(\Exception $e) {
    echo $e->getMessage();
}

使用PUT方法发送和接收JSON数据

try {
    $data = array('foo' => 'bar');
    $json = json_encode($data);
    
    $purli = (new \Purli\Purli(\Purli\Purli::SOCKET))
            ->setConnectionTimeout(3)
            ->setHeader('Content-Type', 'application/json')
            ->setParams($json)
            ->put('http://www.example.com')
            ->close();
    
    $response = $purli->response();
    
    print_r($response->asObject());
} catch(\Exception $e) {
	echo $e->getMessage();
}

使用代理服务器进行请求

try {
    $purli = (new \Purli\Purli());
    
    $purli
        ->setProxy(PROXY_ADDRESS, PROXY_PORT)
        ->get('http://www.example.com')
        ->close();

    $response = $purli->response();

    echo $response->asText();
} catch(\Exception $e) {
    echo $e->getMessage();
}

设置自定义CURL选项

如果安装了CURL扩展,默认情况下Purli将使用它。您始终可以获取CURL处理器对象并设置自定义选项,如果需要更多灵活性。

try {
    $purli = (new \Purli\Purli());
    
    if ($purli->getHandlerType() === \Purli\Purli::CURL) {
        curl_setopt($purli->getHandler(), CURLOPT_TIMEOUT, 10);
    }
    
    $purli
        ->get('http://www.example.com')
        ->close();

    $response = $purli->response();

    echo $response->asText();
} catch(\Exception $e) {
    echo $e->getMessage();
}

运行测试

Purli使用PHPUnit进行测试,导航到项目根目录并运行命令。

cd tests
phpunit

作者

Milos Kajnaco milos@caenazzo.com

贡献者

Nemanja Nikolic nemanja@massvision.net

许可证

Purli在MIT公共许可证下发布。