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

做网站生意旁/张雷明履新河南省委常委

做网站生意旁,张雷明履新河南省委常委,企业网站建设案例有哪些公司,创做网站生成认证字符串需要用到的工具类namespace App\Service;class HttpUtil{// 根据RFC 3986,除了:// 1.大小写英文字符// 2.阿拉伯数字// 3.点.、波浪线~、减号-以及下划线_// 以外都要编码public static $PERCENT_ENCODED_STRINGS;//填充编码数组public st…

生成认证字符串需要用到的工具类

namespace App\Service;

class HttpUtil

{

// 根据RFC 3986,除了:

// 1.大小写英文字符

// 2.阿拉伯数字

// 3.点'.'、波浪线'~'、减号'-'以及下划线'_'

// 以外都要编码

public static $PERCENT_ENCODED_STRINGS;

//填充编码数组

public static function __init()

{

HttpUtil::$PERCENT_ENCODED_STRINGS = array();

for ($i = 0; $i < 256; ++$i) {

HttpUtil::$PERCENT_ENCODED_STRINGS[$i] = sprintf("%%%02X", $i);

}

//a-z不编码

foreach (range('a', 'z') as $ch) {

HttpUtil::$PERCENT_ENCODED_STRINGS[ord($ch)] = $ch;

}

//A-Z不编码

foreach (range('A', 'Z') as $ch) {

HttpUtil::$PERCENT_ENCODED_STRINGS[ord($ch)] = $ch;

}

//0-9不编码

foreach (range('0', '9') as $ch) {

HttpUtil::$PERCENT_ENCODED_STRINGS[ord($ch)] = $ch;

}

//以下4个字符不编码

HttpUtil::$PERCENT_ENCODED_STRINGS[ord('-')] = '-';

HttpUtil::$PERCENT_ENCODED_STRINGS[ord('.')] = '.';

HttpUtil::$PERCENT_ENCODED_STRINGS[ord('_')] = '_';

HttpUtil::$PERCENT_ENCODED_STRINGS[ord('~')] = '~';

}

//在uri编码中不能对'/'编码

public static function urlEncodeExceptSlash($path)

{

return str_replace("%2F", "/", HttpUtil::urlEncode($path));

}

//使用编码数组编码

public static function urlEncode($value)

{

$result = '';

for ($i = 0; $i < strlen($value); ++$i) {

$result .= HttpUtil::$PERCENT_ENCODED_STRINGS[ord($value[$i])];

}

return $result;

}

//生成标准化QueryString

public static function getCanonicalQueryString(array $parameters)

{

//没有参数,直接返回空串

if (count($parameters) == 0) {

return '';

}

$parameterStrings = array();

foreach ($parameters as $k => $v) {

//跳过Authorization字段

if (strcasecmp('Authorization', $k) == 0) {

continue;

}

if (!isset($k)) {

throw new \InvalidArgumentException(

"parameter key should not be null"

);

}

if (isset($v)) {

//对于有值的,编码后放在=号两边

$parameterStrings[] = HttpUtil::urlEncode($k)

. '=' . HttpUtil::urlEncode((string) $v);

} else {

//对于没有值的,只将key编码后放在=号的左边,右边留空

$parameterStrings[] = HttpUtil::urlEncode($k) . '=';

}

}

//按照字典序排序

sort($parameterStrings);

//使用'&'符号连接它们

return implode('&', $parameterStrings);

}

//生成标准化uri

public static function getCanonicalURIPath($path)

{

//空路径设置为'/'

if (empty($path)) {

return '/';

} else {

//所有的uri必须以'/'开头

if ($path[0] == '/') {

return HttpUtil::urlEncodeExceptSlash($path);

} else {

return '/' . HttpUtil::urlEncodeExceptSlash($path);

}

}

}

//生成标准化http请求头串

public static function getCanonicalHeaders($headers)

{

//如果没有headers,则返回空串

if (count($headers) == 0) {

return '';

}

$headerStrings = array();

foreach ($headers as $k => $v) {

//跳过key为null的

if ($k === null) {

continue;

}

//如果value为null,则赋值为空串

if ($v === null) {

$v = '';

}

//trim后再encode,之后使用':'号连接起来

$headerStrings[] = HttpUtil::urlEncode(strtolower(trim($k))) . ':' . HttpUtil::urlEncode(trim($v));

}

//字典序排序

sort($headerStrings);

//用'\n'把它们连接起来

return implode("\n", $headerStrings);

}

}

对接百度文档服务接口, 这里写了注册文档和阅读文档两个例子

namespace App\Service;

use GuzzleHttp\Client;

class BaiduDoc

{

protected $credentials = ['ak' => '', 'sk' => ''];

protected $host = 'doc.bj.baidubce.com';

protected $timestamp;

protected $expirationInSeconds = 60;

public function __construct()

{

HttpUtil::__init();

date_default_timezone_get('UTC');

$this->timestamp = new \DateTime();

}

/**

* 注册文档

* @return array|\Psr\Http\Message\StreamInterface

*/

public function register()

{

// >> first: get authorization

$method = 'POST';

$uri = '/v2/document' ;

$params = ['register' => ''];

$authorization = $this->getAuthorization($method, $this->host, $uri, $params, $this->timestamp, $this->expirationInSeconds);

// >> second: create header and body information for http request

$url = "https://{$this->host}{$uri}?register";

$timeStr = $this->timestamp->format("Y-m-d\TH:i:s\Z");

$head = [

"Content-Type" => "application/json",

"Authorization" => $authorization,

"x-bce-date" => $timeStr,

];

$body = [

'title' => '123',

'format' => 'doc',

];

$client = new Client();

$response = $client->request($method, $url, [

'body' => json_encode($body),

'headers' => $head

]);

$body = $response->getBody();

return $body;

}

/**

* 阅读文档

* @return array|\Psr\Http\Message\StreamInterface

*/

public function read()

{

// >> first: get authorization

$method = 'GET';

$documentId = 'doc-icukvvnfq6ixnat';

$uri = '/v2/document/'. $documentId;

$params = ['read' => ''];

$this->expirationInSeconds = 3600;

$authorization = $this->getAuthorization($method, $this->host, $uri, $params, $this->timestamp, $this->expirationInSeconds);

// >> second: create header and body information for http request

$url = "http://{$this->host}{$uri}?read";

$timeStr = $this->timestamp->format("Y-m-d\TH:i:s\Z");

$head = [

"Content-Type" => "application/json",

"Authorization" => $authorization,

"x-bce-date" => $timeStr,

];

$client = new Client();

$response = $client->request($method, $url, [

'headers' => $head

]);

$body = $response->getBody();

return $body;

}

// 获取认证字符串

protected function getAuthorization($method, $host, $uri, $params, $timestamp, $expirationInSeconds)

{

$timeStr = $timestamp->format("Y-m-d\TH:i:s\Z");

$authStringPrefix = "bce-auth-v1/{$this->credentials['ak']}/{$timeStr}/{$expirationInSeconds}";

$signingKey = hash_hmac('SHA256', $authStringPrefix, $this->credentials['sk']);

$canonicalHeader1 = "host;x-bce-date";

$canonicalHeader2 = "host:{$host}\n" . "x-bce-date:" . urlencode($timeStr);

$httpUtil = new HttpUtil();

$canonicalString = $httpUtil->getCanonicalQueryString($params);

$canonicalUri = $httpUtil->getCanonicalURIPath($uri);

$method = strtoupper($method);

$canonicalRequest = "{$method}\n{$canonicalUri}\n{$canonicalString}\n{$canonicalHeader2}";

$signature = hash_hmac('SHA256', $canonicalRequest, $signingKey);

$authorization = "bce-auth-v1/{$this->credentials['ak']}/{$timeStr}/{$expirationInSeconds}/{$canonicalHeader1}/{$signature}";

return $authorization;

}

}

http://www.jmfq.cn/news/4888513.html

相关文章:

  • 官方网站、门户网站是什么意思?/seo怎么推广
  • 网站域名备案变更/企业网站有哪些
  • 桐乡网站制作/网络营销和直播电商专业学什么
  • 网站开发完成情况说明/制作网页模板
  • 常州网站制作/宁波网站推广优化公司怎么样
  • 企业做网站的目的/站长工具查询seo
  • 做网站怎么打空格/网络营销策略ppt
  • 湖北营销型网站建设多少钱/搜索引擎营销简称为
  • 网站兼职做计划赚小钱/网络营销公司哪家可靠
  • 武汉网站建设兼职2017/百度关键字优化
  • 建设执业资格注册中心官方网站/怎样搭建网站
  • 自己如何做简单网站/搜索引擎优化的方法有哪些?
  • 沧州网站的公众号/营销推广活动方案
  • 做衣服网站有哪些/百度推广费用多少
  • 合肥网站优化/seo实战密码在线阅读
  • 网站建设杭州滨江/白帽优化关键词排名seo
  • 建立独立网站需要注册公司吗/百度最新推广产品
  • 网站顶级导航制作方法/北京百度公司总部电话
  • wordpress调用网站标题/视频营销
  • wordpress查询页面/青岛seo网站排名优化
  • php 网站/新东方培训机构官网
  • 微餐饮网站建设用途/什么是整合营销并举例说明
  • 做sorry动图的网站/深圳网站建设的公司
  • 做平面设计的网站/为什么sem的工资都不高
  • 主流网站风格/免费代理浏览网页
  • wordpress前台编辑/seo优化是什么
  • 公司品牌vi设计是什么/百度优化seo
  • 做静态网站的参考文献/济南网络优化厂家
  • 购彩网站建设/抖音seo查询工具
  • 正能量网站入口不用下载免费/成功的网络营销案例