使用curl_exe,然后得到JSON文件



我是PHP(Laravel)的新手,得到了一些项目。下面是解释:

  • 一个设备存在于某个地方,它收集一些数据。
  • 我的项目需要登录设备,需要通过JSON文件获取数据。

我使用了下面的代码:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "$url.0.json");
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 40);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);

$response = curl_exec($ch);
$errno = curl_errno($ch);
$error = curl_error($ch);
$code = -1;   

if (!$errno) $code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

返回302 found error,所以我添加了这行代码:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);  

之后,我得到了200个代码,但响应是登录页面的HTML代码。(JSON)

当我在浏览器中复制粘贴URL("$ URL .0.json")时,它会重定向到登录页面

我认为登录不能成功。

请给我一些建议。我提前感谢你

如果你正在使用Laravel,不要使用Curl。假设你使用的是Laravel 7或更高版本,你可以使用Laravel HTTP客户端。这比Curl简单多了。

Laravel Docs: https://laravel.com/docs/8.x/http-client

use IlluminateSupportFacadesHttp; 
$response = Http::withBasicAuth($username, $password)->get($url);

如果您使用的是早期版本的Laravel,请使用Guzzle HTTP Client。

Guzzle Docs: https://docs.guzzlephp.org/en/stable/quickstart.html

use GuzzleHttpClient;
$client = new Client;
$response = $client->request('GET', $url, ['auth' => [$username, $password']]);

最新更新