Sebelum saya mula bertanya, saya harus menyatakan bahawa saya sedang belajar semula PHP setelah lama meninggalkannya. Sila berlembut. Selain itu, saya tahu saya boleh menggunakan perpustakaan seperti curl untuk melakukan beberapa perkara ini, tetapi saya ingin memahami cara PHP itu sendiri berfungsi.
Saya cuba menyerahkan permintaan http GET ke Microsoft API (Platform Identiti). Inilah kod saya:
<?php $data = array ( 'client_id' => '6731de76-14a6-49ae-97bc-6eba6914391e', 'state' => '12345', 'redirect_uri' => urlencode('http://localhost/myapp/permissions') ); $streamOptions = array('http' => array( 'method' => 'GET', 'content' => $data )); $streamContext = stream_context_create($streamOptions); $streamURL = 'https://login.microsoftonline.com/common/adminconsent'; $streamResult = file_get_contents($streamURL, false, $streamContext); echo $streamResult; ?>
Apabila saya cuba melaksanakan kod di atas, saya mendapat: Coretan ralat
Sebaliknya, menggunakan kod berikut, permintaan http berfungsi dengan baik:
<?php $streamURL = 'https://login.microsoftonline.com/common/adminconsent?client_id=6731de76-14a6-49ae-97bc-6eba6914391e&state=12345&redirect_uri=http://localhost/myapp/permissions'; $streamResult = file_get_contents($streamURL); echo $streamResult; ?>
Bolehkah sesiapa memberikan pandangan tentang mengapa contoh pertama gagal dan contoh kedua berjaya? Fikiran saya mesti ada beberapa jenis ralat sintaks. Terima kasih terlebih dahulu.
content
参数用于请求正文,适用于 POST 和 PUT 请求。但 GET 参数不会出现在正文中,而是直接出现在 URL 中。因此,您的第一个示例只是向基本 URL 发出 GET 请求,根本不带任何参数。另请注意,method
Parameter telah lalai untuk GET supaya anda boleh melangkau keseluruhan bit strim.Anda boleh membina URL anda seperti ini:
Kemudian:
Atau susun semuanya dalam satu ayat:
Atau gunakan
$url
来提供curl_init()
atau Guzzle atau serupa.