1. Problème
Après avoir soumis le formulaire, les données de publication ne peuvent pas être obtenues via request->param() ou $this->request->param(), et un tableau vide est obtenu.
2. Cause du problème
L'attribut enctype n'est pas défini dans le formulaire
Lorsque le formulaire est soumis, si l'attribut enctype n'est pas défini, la méthode de transmission des données par défaut est application/x. -www-form-urlencoded. Les données seront désormais placées dans les en-têtes de requête HTTP au lieu du corps de la requête. Par conséquent, lors de l'obtention des données de publication, nous devons utiliser $this->request->post() ou request()->post().
Aucun en-tête de requête n'est défini lors de l'appel de l'interface
Lors de l'appel de l'interface, nous devons définir l'en-tête de requête correspondant, tel que Content-Type: application/json, sinon le serveur ne peut pas analyser les données. Si le Content-Type n'est pas défini, le serveur par défaut est application/x-www-form-urlencoded, et à ce moment-là, les données de publication seront placées dans l'en-tête de la requête http au lieu du corps de la requête, ce qui entraînera l'impossibilité d'obtenir correctement les données de publication.
3. Solution
Définissez l'attribut enctype
Ajoutez enctype="multipart/form-data" dans le formulaire, afin que les données de publication puissent être obtenues correctement.
Définir les en-têtes de requête
Lors de l'appel de l'interface, vous pouvez utiliser curl pour définir les en-têtes de requête. L'exemple de code est le suivant :
$data = array( 'username' => 'admin', 'password' => '123456' ); $url = 'http://www.example.com/login'; $ch = curl_init(); $header = array( 'Content-Type: application/json', 'Content-Length: '.strlen(json_encode($data)) ); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data)); curl_setopt($ch, CURLOPT_HTTPHEADER, $header); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $res = curl_exec($ch); curl_close($ch);
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!