当前位置: 首页 > news >正文

做网站服务销售宁波seo软件免费课程

做网站服务销售,宁波seo软件免费课程,asp网站301,空间网站链接怎么做背景 开发过程中,跟外部接口对接时,很常见的要考虑到失败重新的情况,这里记录一下我用的失败重试的情况, 重试方法 1、使用 Laravel 的 HTTP 客户端和异常处理 结合异常处理和重试逻辑 use Illuminate\Support\Facades\Http;…

背景

开发过程中,跟外部接口对接时,很常见的要考虑到失败重新的情况,这里记录一下我用的失败重试的情况,

重试方法

1、使用 Laravel 的 HTTP 客户端和异常处理

结合异常处理和重试逻辑

use Illuminate\Support\Facades\Http;
use Illuminate\Http\Client\RequestException;try {$response = Http::get('http://example.com/api/endpoint');$response->throw();
} catch (RequestException $e) {// 可以根据异常类型或状态码决定是否重试if ($e->response && $e->response->status() >= 500) {// 重试逻辑,例如重新发送请求$response = Http::get('http://example.com/api/endpoint');}
}
2、Guzzle 及其重试中间件

文档地址:https://docs.guzzlephp.org/en/stable/quickstart.html#creating-a-client

Guzzle 是一个广泛使用的 HTTP 客户端,并且有相应的重试中间件可以实现请求失败的重试。

2.1安装扩展
composer require guzzlehttp/guzzle
2.2失败重试逻辑
use GuzzleHttp\Client;
use GuzzleHttp\HandlerStack;
use GuzzleHttp\Handler\CurlHandler;
use GuzzleHttp\Middleware;
use GuzzleHttp\Psr7\Response;class YourHttpClientClass {// 自定义的重试决策函数public static function retryDecider() {return function ($retries, $request, $response = null, $exception = null) {if ($retries >= 3) {return false;}if ($exception instanceof \GuzzleHttp\Exception\ConnectException) {return true;}if ($response) {// 如果请求有响应,这里根据自己的业务而定,是否继续重试$res_content = $response->getBody()->getContents();$res = json_decode($res_content, true);if (isset($res['error'])) { // 如果不存在status ,更新access_token,再次请求info('接口请求结果: '. json_encode($res) . '需要刷新access_token重新请求');self::getProAccessToken($refresh = true);return true;}}return false;};}// 自定义的重试延迟函数public static function retryDelay() {return function ($numberOfRetries) {return 1000 * $numberOfRetries; // 延迟 1 秒,重试次数越多延迟越长};}public function createClient() {// 创建处理栈并使用 CurlHandler$handlerStack = HandlerStack::create(new CurlHandler());// 创建 mapResponse 中间件$mapResponse = Middleware::mapResponse(function (Response $response) {$response->getBody()->rewind();return $response;});// 创建重试中间件,指定决策者为 retryDecider(),指定重试延迟为 retryDelay()$handlerStack->push($mapResponse);// 创建重试中间件$handlerStack->push(Middleware::retry(self::retryDecider(), self::retryDelay()));// 创建 Guzzle 客户端$http_client = new Client(['handler' => $handlerStack,'connect_timeout' => 5,        // 连接超时 5 秒钟'read_timeout' => 20,           // 读取内容超时 20 秒钟'timeout' => 30,                // 总超时 30 秒钟'verify' => true,              // 检查 ssl'http_errors' => false,         // 暂时忽略 http 错误,但后续需检查状态码'force_ip_resolve' => 'v4',     // 强制使用 IPV4 解析地址'headers' => ['Ocp-Apim-Subscription-Key' => config('jpro.vpcx.api_key') ],]);if (strtolower($method) == 'get') {$options = ['query' =>  $data ];$res = $http_client->request('get', $api_url, $options)->getBody()->getContents();} elseif (strtolower($method) == 'post') {$res = $http_client->request('post', $api_url, ['form_params' =>  $data,])->getBody()->getContents();}return $res;}
}
http://www.sczhlp.com/news/45357/

相关文章:

  • 哪个网站可以做顺风车seo指的是什么意思
  • 广州网站建设技术seo免费诊断电话
  • 北京市西城区社会建设网站查看网站流量的工具
  • 贵阳网站推广北京seo招聘
  • 深圳网站设计推荐柚米网络游戏推广公司
  • 济南经三路专业做网站商品seo优化是什么意思
  • 网站建设公司yu免费涨粉工具
  • 大型车产品网站建设网络营销与网站推广的
  • 焦作网站建设的公司哪家好潍坊网站排名提升
  • 网站推广实施方案中国十大外贸平台
  • 如何替换网站ico图标引擎搜索网站
  • 莱芜区组织部网站恶意点击软件哪个好
  • 如何做关于旅游的网站页面无锡网站制作优化
  • Kotlin在移动开发中的应用价值
  • 手机app制作网站模板搜索引擎优化的主要工作有
  • 专业做网站和小程序域名备案
  • asp 做购物网站关键词seo优化
  • 网站设计师加油站电脑培训班价目表
  • 自己买主机可以做网站吗情感营销
  • JavaScript前端框架演进与开发模式转变
  • 政法委网站建设方案怎么策划一个营销方案
  • 自己做电影网站需要什么广州seo服务
  • 浙江建设日本公司网站世界杯大数据
  • 哪个yy频道做天龙私服网站南召seo快速排名价格
  • 电商网站建设与运维需要的软件百度关键词刷排名软件
  • 网站开发要哪些百度下载免费安装到桌面
  • 申请香港网站吗手机百度2020最新版
  • 给个2021站你们懂得不花钱的营销策划公司 品牌策划公司
  • 电子商城网站建设方案百度热线人工服务电话
  • 广东省建设执业资格注册中心官方网站网站开发语言