我遇到了一个无法解决的问题,我有一个使用Guzzle连接到宁静的api的类,它可以在修补程序中工作,但是在控制器中,我总是使用相同的连接收到401未经授权的错误数据。
ApiConnectionClass
use App\ApiData;
use Carbon\Carbon;
use GuzzleHttp\Client;
use GuzzleHttp\Exception\GuzzleException;
use GuzzleHttp\Psr7;
class ApiConnectionClass
{
var $conn_data;
var $client;
public function __construct()
{
$this->conn_data = ApiData::findOrFail(1);
$this->client = new Client(['base_uri' => $this->conn_data->url]);
}
public function lista_pruebas(){
try{
$response = $this->client->request('GET', 'pruebas/detalles', [
'verify' => false,
'headers' => ['Authorization' => 'Bearer ' . $this->conn_data->access_token],
]);
} catch (GuzzleException $e) {
dump(Psr7\str($e->getRequest()));
if ($e->hasResponse()) {
dd(Psr7\str($e->getResponse()));
}
}
return json_decode($response->getBody()->getContents());
}
在修补匠中,我得到了正确的json响应
$api = new App\Classes\ApiConnectionClass();
$api->lista_pruebas();
ApiController
use App\Classes\ApiConnectionClass;
class ApiController extends Controller
{
public function lista_pruebas(){
$api = new ApiConnectionClass();
$lista = $api->lista_pruebas();
return view('pruebas.index', compact('lista'));
}
}
从控制器调用的ApiConnectionClass响应
“”“ HTTP / 1.0 401未经授权\ r \ n日期:2018年8月22日,星期三16:20:58 GMT \ r \ n服务器:Apache / 2.4.33(Win64)PHP / 7.2.4 \ r \ n变化: 授权\ r \ n X-Powered-By:PHP / 7.2.4 \ r \ n缓存控制:无缓存, 私人\ r \ n内容长度:13 \ r \ n连接:close \ r \ n内容类型: text / html; charset = UTF-8 \ r \ n \ r \ n未经授权。 “”“
答案 0 :(得分:0)
这似乎不是您在代码中所做的事情的错误,因为我可以在网络上的任何地方看到这种耗时的用法。我确实有一些建议。 Tinker使用的运行时与应用程序不同(分别为php-cli和php-fpm),这可能会导致问题,因为在一种情况下(php-cli)php直接从您的机器进入api服务器,而在另一种情况下则通过您的网络服务器发出请求之前(php-fpm)。要做的第一件事是使用php artisan cache:clear和php artisan config:clear清除您的laravel缓存和配置,如果失败,我将查看您的Web服务器上的跨域限制或设置。祝好运!