美文网首页
使用GuzzleHttp快速入门及携带cookie

使用GuzzleHttp快速入门及携带cookie

作者: 江江简书 | 来源:发表于2020-12-01 09:04 被阅读0次

在某些同步批量的业务场景要用到请求实现,但是用curl显得有点慢,因此引入guzzlehttp来解决这个问题

发起同步请求并携带cookie

function doladall($url, $arr)
{
    //同步请求
    $client = new GuzzleHttp\Client();
    //设置cookie

    $domain = parse_url($url)['host'];
    $values = [
        'user_code' => 'xxx', 
    ];
    $cookieJar = CookieJar::fromArray($values, $domain);
    $res = $client->request('POST', $url, [
        'cookies' => $cookieJar,
        'form_params' => $arr
//        'query' => $arr
    ]);
    echo $res->getBody();
}

发起异步请求并携带cookie

function syncpost($url, $arr)
{
    $client = new Client();

    //设置cookie
    $domain = parse_url($url)['host'];
    $values = [
        'user_code' => 'xxx',
    ];
    $cookieJar = CookieJar::fromArray($values, $domain);

    $request = new Request('POST', $url);
$promise = $client->sendAsync($request,['cookies' => $cookieJar,'form_params' => $arr])->then(function ($response) {
    echo 'I completed! ' . $response->getBody();
});

$promise->wait();

}

模拟登录并获取cookie值

$arr = [
    'name'=>'xxx',
    'pwd'=>'xxx',
];
$client = new GuzzleHttp\Client(['base_uri' => 'http://localhost:9091/index/index/']);
$res = $client->request('POST', 'logincheck',[
    'form_params'=>$arr
]);
$head_arr = $res->getHeader('Set-Cookie');
$cookie_arr = [];
foreach ($head_arr as $val){
    $new_sub = explode('=',substr($val,0,strpos($val,';')));
    $cookie_arr[$new_sub[0]] = $new_sub[1];
}
var_dump($cookie_arr);exit;

https://blog.csdn.net/qq_27295403/article/details/92830567 //解决https报错的问题

相关文章

网友评论

      本文标题:使用GuzzleHttp快速入门及携带cookie

      本文链接:https://www.haomeiwen.com/subject/pbmjwktx.html