我想從外部 API 獲取資料。但是,我必須在獲取資料之前登錄才能獲取會話,并且在獲取資料后我必須注銷
這是我的代碼
use GuzzleHttp\Client;
$client = new Client();
$res = $client->request('POST', 'Login_URL', [
'json' => [
"JSON param"
]
]);
$res = $client->request('GET', 'Get_URL');
$res = $client->request('POST', 'Logout_URL');
但我只能第一步(登錄)。我在第二步中收到錯誤訊息以獲取資料
Client error: `GET "Get_URL" ` resulted in a `401 Unauthorized` response:{"message":"You are not logged in."}
如何在第一步使用登錄會話運行所有這些代碼?
uj5u.com熱心網友回復:
此代碼供您進行登錄和注銷會話
$cookie_jar = tempnam("tmp", "cookie");
//login
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => '_URL',
CURLOPT_RETURNTRANSFER=> true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION=> true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_COOKIEJAR => $cookie_jar,
CURLOPT_POSTFIELDS =>'{
"name" : "****",
"password" : "****",
"company" : "****"
}',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json'),
)
);
$response = curl_exec($curl);
//get data
curl_setopt_array($curl, array(
CURLOPT_URL => '_URL',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_COOKIEFILE => $cookie_jar
)
);
$datapo = json_decode(curl_exec($curl));
//logout
curl_setopt_array($curl, array(
CURLOPT_URL => '_URL',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => '{
"name" : "****",
"password" : "****",
"company" : "****"
}',
CURLOPT_COOKIEFILE => $cookie_jar
)
);
$response = curl_exec($curl);
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/436719.html
