From 1f6d91b849407f62cf63695cc2de8c9bf480509a Mon Sep 17 00:00:00 2001 From: sugar1569 Date: Tue, 2 Apr 2019 17:34:31 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8E=BB=E6=8E=89CA=E8=AF=81=E4=B9=A6=E9=AA=8C?= =?UTF-8?q?=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vendor/guzzlehttp/guzzle/src/Client.php | 30 +++++++++++++++--------- vendor/overtrue/wechat/src/Core/Http.php | 6 +++-- 2 files changed, 23 insertions(+), 13 deletions(-) diff --git a/vendor/guzzlehttp/guzzle/src/Client.php b/vendor/guzzlehttp/guzzle/src/Client.php index de4df8a5..bd14c7b0 100644 --- a/vendor/guzzlehttp/guzzle/src/Client.php +++ b/vendor/guzzlehttp/guzzle/src/Client.php @@ -161,7 +161,7 @@ class Client implements ClientInterface 'allow_redirects' => RedirectMiddleware::$defaultSettings, 'http_errors' => true, 'decode_content' => true, - 'verify' => true, + 'verify' => false, 'cookies' => false ]; @@ -290,7 +290,14 @@ class Client implements ClientInterface */ private function applyOptions(RequestInterface $request, array &$options) { - $modify = []; + $modify = [ + 'set_headers' => [], + ]; + + if (isset($options['headers'])) { + $modify['set_headers'] = $options['headers']; + unset($options['headers']); + } if (isset($options['form_params'])) { if (isset($options['multipart'])) { @@ -302,6 +309,8 @@ class Client implements ClientInterface } $options['body'] = http_build_query($options['form_params'], '', '&'); unset($options['form_params']); + // Ensure that we don't have the header in different case and set the new value. + $options['_conditional'] = Psr7\_caseless_remove(['Content-Type'], $options['_conditional']); $options['_conditional']['Content-Type'] = 'application/x-www-form-urlencoded'; } @@ -313,24 +322,19 @@ class Client implements ClientInterface if (isset($options['json'])) { $options['body'] = \GuzzleHttp\json_encode($options['json']); unset($options['json']); + // Ensure that we don't have the header in different case and set the new value. + $options['_conditional'] = Psr7\_caseless_remove(['Content-Type'], $options['_conditional']); $options['_conditional']['Content-Type'] = 'application/json'; } if (!empty($options['decode_content']) && $options['decode_content'] !== true ) { + // Ensure that we don't have the header in different case and set the new value. + $options['_conditional'] = Psr7\_caseless_remove(['Accept-Encoding'], $options['_conditional']); $modify['set_headers']['Accept-Encoding'] = $options['decode_content']; } - if (isset($options['headers'])) { - if (isset($modify['set_headers'])) { - $modify['set_headers'] = $options['headers'] + $modify['set_headers']; - } else { - $modify['set_headers'] = $options['headers']; - } - unset($options['headers']); - } - if (isset($options['body'])) { if (is_array($options['body'])) { $this->invalidBody(); @@ -344,6 +348,8 @@ class Client implements ClientInterface $type = isset($value[2]) ? strtolower($value[2]) : 'basic'; switch ($type) { case 'basic': + // Ensure that we don't have the header in different case and set the new value. + $modify['set_headers'] = Psr7\_caseless_remove(['Authorization'], $modify['set_headers']); $modify['set_headers']['Authorization'] = 'Basic ' . base64_encode("$value[0]:$value[1]"); break; @@ -382,6 +388,8 @@ class Client implements ClientInterface $request = Psr7\modify_request($request, $modify); if ($request->getBody() instanceof Psr7\MultipartStream) { // Use a multipart/form-data POST if a Content-Type is not set. + // Ensure that we don't have the header in different case and set the new value. + $options['_conditional'] = Psr7\_caseless_remove(['Content-Type'], $options['_conditional']); $options['_conditional']['Content-Type'] = 'multipart/form-data; boundary=' . $request->getBody()->getBoundary(); } diff --git a/vendor/overtrue/wechat/src/Core/Http.php b/vendor/overtrue/wechat/src/Core/Http.php index 74dc7971..f57260d8 100644 --- a/vendor/overtrue/wechat/src/Core/Http.php +++ b/vendor/overtrue/wechat/src/Core/Http.php @@ -241,6 +241,8 @@ class Http Log::debug('Client Request:', compact('url', 'method', 'options')); $options['handler'] = $this->getHandler(); + //不验证CA证书 + $options['verify'] = false; $response = $this->getClient()->request($method, $url, $options); @@ -264,7 +266,7 @@ class Http public function parseJSON($body) { if ($body instanceof ResponseInterface) { - $body = $body->getBody(); + $body = mb_convert_encoding($body->getBody(), 'UTF-8'); } // XXX: json maybe contains special chars. So, let's FUCK the WeChat API developers ... @@ -274,7 +276,7 @@ class Http return false; } - $contents = json_decode($body, true); + $contents = json_decode($body, true, 512, JSON_BIGINT_AS_STRING); Log::debug('API response decoded:', compact('contents'));