Nous utilisons file_get_contents pour communiquer avec un service Web, qui crée des utilisateurs et, en cas de succès, renvoie un objet JSON avec les détails du nouvel utilisateur créé. le code ci-dessous montre comment nous le faisons, l'utilisateur est créé avec succès, ce qui signifie que nous pouvons le voir du back-end, cependant, nous ne pouvons pas obtenir la réponse JSON, il ne renvoie rien.Pourquoi file_get_contents ne reçoit rien du service Web?
public function register(){
$username = "testing";
$email = "[email protected]";
$password = "testpsd";
$userData = '{"$xmlns": {"pluser": "http://xml.webservice.com/auth/data/User"},'
.'"pluser$userName": "'.$username.'",'
.'"pluser$password": "'.$password.'",'
.'"pluser$fullName": "fullname",'
.'"pluser$email": "'.$email.'"}';
$url = 'https://webservice.com?form=json';
$cparams = array('http' => array('method' => 'POST','ignore_errors' => true));
$cparams['http']['content'] = $userData;
$cparams['http']['request_fulluri'] = true;
$cparams['http']['header'] = 'Content-type: application/json';
$context = stream_context_create($cparams);
$fp = @file_get_contents($url,false,$context);$res = stream_get_contents($fp);
print_r($res);
}
au début, nous pensions que le service web était censé nous avons testé contre rien renvoyer, il en C# qui fonctionnait parfaitement bien, ce qui signifie que nous avons eu la créer réponse de quelque chose comme { « stutas »: « avec succès », "userCreated": "true"} est ici le code C#:
String url = "https://webservice.com?form=json";
HttpWebRequest req = (HttpWebRequest) WebRequest.Create(url);
req.Method = "POST";
string strRequest = "exactly the same json string";
req.ContentLength = strRequest.Length;
StreamWriter streamOut = new StreamWriter(req.GetRequestStream(), System.Text.Encoding.ASCII);
streamOut.Write(strRequest);
streamOut.Close();
StreamReader streamIn = new StreamReader(req.GetResponse().GetResponseStream());
while (!streamIn.EndOfStream)
Console.WriteLine(streamIn.ReadToEnd());
streamIn.Close();
Console.ReadKey();}
est quelque chose manquant ou mal configuré dans le code php?
Avez-vous vérifié que le JSON est vraiment ce que vous pensez qu'il utilise 'print_r (json_decode (userData $))'? –
@Peter, j'ai finalement réussi à résoudre ce problème en utilisant curl. curl n'a pas fonctionné au début parce que les réglages php étaient faux. dès que c'est corrigé, tout a fonctionné comme charme. Merci quand même – walter