2011-12-20 17 views
5

¿Cómo puedo acceder a los datos de json dentro de un php-script, que recibió a través de http-post? que estoy haciendo lo siguiente en el lado del IOS:Datos JSON de iOS en PHP-script

NSData *data = [NSJSONSerialization dataWithJSONObject:object options:0 error:NULL]; 

NSMutableURLRequest *req = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://example.com/script.php"]]; 
[req setHTTPMethod:@"POST"]; 
[req setHTTPBody:data]; 

[NSURLConnection sendSynchronousRequest:req returningResponse:&response error:&err]; 

¿Cómo accedo a estos datos en el script PHP? En otras palabras, cuando llamo al json_decode(...) en php-script, ¿qué es ...?

+0

Una buena manera de depurar este tipo de cosas es a 'var_dump ($ _ POST)' para un archivo de registro y ver lo que está consiguiendo enviado. – jprofitt

+0

Sugiero encontrar un curso básico de PHP antes que nada para asegurarte de que entiendes los conceptos básicos (obtener los datos POST es bastante básico) de PHP. –

+4

Lo sentimos, pero $ _POST no contiene ningún dato al publicar json-data directamente. Y acceder a 'php: // input' no me parece tan básico. –

Respuesta

14

Si su están enviando las JSON en el método POST, se puede recibir en PHP con el código de abajo

<?php $handle = fopen('php://input','r'); 
       $jsonInput = fgets($handle); 
       // Decoding JSON into an Array 
       $decoded = json_decode($jsonInput,true); 
?> 
+1

¡Gracias! ¡Perfecto! –

+0

Buenas obras Gracias ... – Elby

+0

@nakkeeran, ¿podemos usar siempre php: // input ??? nunca lo había usado antes pero parece funcionar en mi configuración local – alex

0

En el script php se toman los datos POST y hacer

json_decode($data); 

y que le dará un objeto que puede trabajar con ellos.

+0

¿Qué es $ datos? ¿Es $ _POST? –

+0

Creo. Pruébalo, y avísame – macintosh264

+0

No, no trabajo con $ _POST. Por cierto, ¿por qué esta pregunta recibe tantos votos negativos? ¿Qué tiene de malo? –

1

la solicitud POST cuando se envía utilizando iOS no trabaja con $ _POST. Si se emite una solicitud similar utilizando js, ​​el json en la publicación funciona.

+0

La forma correcta de hacerlo sería establecer el encabezado en text/html. Si configura el encabezado para application/json, el script php simplemente lo arruina. –

0
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; 
    [request setHTTPMethod:@"POST"]; 
    [request setHTTPBody: jsonData]; 
    [request setValue:@"text/html" forHTTPHeaderField:@"Content-Type"]; 
    [request setValue:[NSString stringWithFormat:@"%d", [jsonData length]] forHTTPHeaderField:@"Content-Length"]; 

Este código se puede utilizar para enviar una respuesta