2010-12-09 4 views
1

J'ai besoin de poster objet JSON avec demande de poste http et traiter les réponses.Poster objet JSON avec php (post http)?

objet JSON:

{ 
    "my_json" : "12345" 
} 

J'ai écrit somethinh comme ça, mais cela ne fonctionne pas.

$url = "http://localhost/my_json.json"; 

$json_Data = file_get_contents($url,0,null,null); 

print_r($json_Data); 

Et il n'imprime rien.

Aide s'il vous plaît.

+0

Etes-vous sûr que votre serveur Web traite correctement /my_json.json? Est-ce –

+0

'allow_url_fopen' activé dans votre fichier php.ini pour permettre de demander des URLS par' file_get_contents() 'etc? Voir http://php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen – richsage

+0

allow_url_fopen est activé.Comment faire en sorte que mon serveur web fonctionne correctement? Que voulez-vous dire? – user147

Répondre

0
$url = "http://localhost/my_json.json"; 

$json_Data = file_get_contents($url,0,null,null); 

$new = json_decode($json_Data); 

print_r($new); 

Je pense que cela pourrait le faire

+0

Non, page encore vide :( – user147

+0

@ user303832: Etes-vous sûr que vous avez une installation correcte sur votre serveur? Ce code est valide à 100% – OptimusCrime

2

Client:

<?php 
$data = array('foo' => 'bar', 'red' => 'blue'); 


$ch = curl_init(); 
$post_values = array('json_data' => json_encode($data)); 
curl_setopt($ch, CURLOPT_URL, 'http://localhost/server.php'); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_values); 
$data = curl_exec($ch); 
if(!curl_errno($ch)) 
{ 
    echo 'Received raw data' . $data; 
} 
curl_close($ch); 
?> 

Server (server.php):

<?php 
$data = json_decode($_POST['json_data']); 
// ... do something ... 
header('Content-type: text/json'); 
print json_encode($response); 
?> 
+0

Ok, mais je crée dynamiquement objet json.Puis pointez cet objet à une autre URL another_url. /my_json.json 'et rien ne retrive :( – user147

+0

Je ne suis pas php guru :( – user147

+0

Ne me prenez pas mal, mais qu'est-ce que vous essayez exactement de faire?Selon votre question "Je dois poster un objet JSON avec une requête HTTP POST et HANDLE REPONSES.". –

0

Essayez ceci:

$jsonFile = 'http://localhost/my_json.json'; 
$jsonData = file_get_contents($jsonFile); 
$phpData = json_decode($jsonData); 
print_r($phpData); 
+0

Êtes-vous sûr de pouvoir accéder à http: //localhost/my_json.json en utilisant votre navigateur Web? –

0

Le problème est peut-être des file_get_contents arguments étrangers:

  • Le arg 2d doit être un booléen et est en option (valeur par défaut est false)
  • Le 3 arg est ok
  • Le 4 devrait être un entier, est en option (valeur par défaut est -1)

vous devriez essayer $json_Data = file_get_contents($url);

de plus pour afficher les données dans votre navigateur yo Vous devriez essayer avec header('Content-type: text/plain'); juste avant de sortir avec print_r() afin qu'aucun traitement ne soit effectué par votre navigateur

Pour être sûr qu'il n'y a vraiment rien envoyé à votre navigateur, vous pouvez aussi essayer FireFox + FireBug pour voir les réponses HTTP.