angletf/fasthttp

php http请求库, 简单好用 / http request / http response

dev-master 2023-04-05 21:47 UTC

This package is auto-updated.

Last update: 2024-09-06 01:01:12 UTC


README

PHP >= 8.1

安装

composer require angletf/php-fasthttp

快速使用

Cookie操作

<?php

include_once "../vendor/autoload.php";

use angletf\FastHttpCookie;

$str_cookie = "_csrf=wdCG_U13JnoO3xSUFIpLj0st; did=s%3Av0%3A12e72b20-782b-11ed-8460-7b623f70b5d3.0Fp0NKa7oimQ9mGOz%2Fee46BjSo3Ii05lN%2BaZPjv5ncw; did_compat=s%3Av0%3A12e72b20-782b-11ed-8460-7b623f70b5d3.0Fp0NKa7oimQ9mGOz%2Fee46BjSo3Ii05lN%2BaZPjv5ncw; _gid=GA1.2.2144806362.1676015793; __hstc=168269822.f20a4d48fa563e15e28b528e71ffb897.1676091214648.1676091214648.1676091214648.1; hubspotutk=f20a4d48fa563e15e28b528e71ffb897; __hssrc=1; _ga_MHX0C3C1PT=GS1.1.1676096875.9.0.1676096875.0.0.0; _ga_494MDL3VSL=GS1.1.1676096876.9.0.1676096876.60.0.0; _ga=GA1.2.1052398381.1670636426; auth0=s%3Av1.gadzZXNzaW9ugqZoYW5kbGXEQDso88oruIuB_bZwNjuUjWkWXHpUgFTUhXacqrRJ73n4Wrcoliis0TE09rmrmJYK-dFUGuxP9mYJ2mldeay6ciOmY29va2llg6dleHBpcmVz1__JdrUAY-sp8q5vcmlnaW5hbE1heEFnZc4PcxQAqHNhbWVTaXRlpG5vbmU.zE0U%2BRaWcYoQ6AFjlKOAuKuQPBxudkqnHNn%2B1pS9CtU; auth0_compat=s%3Av1.gadzZXNzaW9ugqZoYW5kbGXEQDso88oruIuB_bZwNjuUjWkWXHpUgFTUhXacqrRJ73n4Wrcoliis0TE09rmrmJYK-dFUGuxP9mYJ2mldeay6ciOmY29va2llg6dleHBpcmVz1__JdrUAY-sp8q5vcmlnaW5hbE1heEFnZc4PcxQAqHNhbWVTaXRlpG5vbmU.zE0U%2BRaWcYoQ6AFjlKOAuKuQPBxudkqnHNn%2B1pS9CtU;";

try{
    $fast_cookie = new FastHttpCookie();

    //解析cookie, 解析后可以直接通过getValue方法获取
    $fast_cookie->parse($str_cookie);
    if( $fast_cookie->combine() == $str_cookie){
        echo "cookie combine success\n";
    }else{
        echo "cookie combine failure\n";
    }

    //Get Cookie
    //获取不存在的cookie返回 NULL, 获取成功则返回对应的数据
    $cookie1 = $fast_cookie->getValue("null_data");
    if ($cookie1 == null){
        echo "get cookie failure\n";
    }else{
        echo "get cookie success: $cookie1\n";
    }

    $cookie2 = $fast_cookie->getValue("_csrf");
    if ($cookie2 == null){
        echo "get cookie failure\n";
    }else{
        echo "get cookie success: $cookie2\n";
    }

    //Set Cookie
    $cookie3 = "new_cookie";
    $fast_cookie->set("_csrf", $cookie3);

    $cookie4 = $fast_cookie->getValue("_csrf");
    if ($cookie3 != $cookie4){
        echo "set cookie failure\n";
    }else{
        echo "set cookie success: $cookie4\n";
    }

}catch (\Exception $e){
    print_r($e);
}

快速请求

请求前需要先构造 Request, 其中 url 为请求地址, method 为请求类型为枚举类型 在RESTful 接口请求中一般为 HttpMethod::JSON, body 为请求内容, headers 为请求的头 数组的 key => value 形式, redirection_count 则为当 HttpCode 为 302, 304, 303 时的跳转次数

try{

    //在Get方式中传递Body数据, 最终会解析至 Url的querystring, 如果重复则会进行覆盖
    $fast_request = new FastHttpRequest("http://m.baidu.com/index.php?a=234&j=OK&v=&hh=8&",
        HttpMethod::GET,        //请求方式
        ["a" => "666"],                //请求内容
        ["cooKie" => "abs=123",], 3);     //请求头部

    echo $fast_request->getUrlPath() . "\n";

    echo $fast_request->combineUrl() . "\n";

    $fast_http = new FastHttp();
    $response = $fast_http->send($fast_request);

    echo $response->body;
    echo $response->code;
    
    $fast_http->close();

    //header的返回会已标准格式返回, 比如 set-cookie 会被转成 Set-Cookie
    //var_dump($response->header);
}catch (\Exception $e){
    print_r($e);
}