2009-07-25 10 views
9

Soy un programador con juegos y gráficos en 3D y, en este momento, me gustaría actualizar mis habilidades de redes y desarrollo web.Enviar solicitud HTTP de iPhone al servidor web PHP de Apache

Tengo una tarea que me gustaría lograr para hacer esto. Mi idea es que me gustaría poder enviar una solicitud HTTP o algo similar a mi servidor web, que ejecuta una configuración basada en LAMP. Me gustaría saber cómo puedo enviar una solicitud HTTP que contenga información de mi iPhone utilizando el marco Cocoa Touch a mi servidor web.

Me gustaría que el servidor web (usando PHP) pueda grabar la información enviada en un archivo de texto sin formato, que luego pueda usar para hacer gráficos. Para mi ejemplo, podríamos simplemente enviar la fecha actual.

Creo que la gente debe hacer esto muy a menudo y realmente quiero saber cómo hacer esto. Gracias por tu ayuda.

P.S. Si no conoce el código de Cocoa para enviar la solicitud, está bien, estoy seguro de que puedo resolverlo, pero al menos me gustaría saber cómo conseguir que el servidor Linux guarde la solicitud HTTP, preferiblemente PHP pero otro lenguaje apropiado está bien. Las marcas de bonificación de distancia para hacer esto de forma segura.

también: yo soy un novato total en este y requieren código fuente, los aplausos: D

Respuesta

11

Realmente no se puede ir más allá de una biblioteca como ASIHTTPRequest si necesita realizar solicitudes HTTP desde un cliente de iPhone o Mac a un servidor web. La documentación es muy bueno, y cubre todos los temas importantes como:

  • asincrónica vs peticiones síncronas
  • el envío de datos al servidor
  • seguimiento de carga/descarga progreso
  • autenticación de manejo
  • utilizando el llavero para el almacenamiento de credenciales
  • cuerpos de solicitud de compresión con gzip

Debería check it out - hará su vida mucho más fácil.

+0

Genial, se ve bien +1 –

-1

No es realmente un chico del lado del servidor, pero el envío de la petición HTTP se puede lograr en un par de maneras. Lo más trivialmente fácil es usar + NSString stringWithContentsOfURL: y usar los parámetros GET en la URL. Eso afectará al servidor en la URL que especifique, y los parámetros GET pueden contener los datos. El valor de retorno puede ignorarse, y probablemente sea mínimo.

No voy a buscarlo en profundidad en este momento, pero creo que usaría NSStream y NSURLRequest para construir consultas más complejas, usando POST, por ejemplo.

+0

"No voy a buscarlo en profundidad en este momento", -> Entonces, ¿por qué publicaste aquí? – twerdster

9

Bien nadie ha dado una respuesta, así que me fui y descubrí un proyecto que detalla cómo hacer esto usando una aplicación nativa de Mac para un cliente o un cliente de página web PHP. Modifiqué un poco el código del servidor original, para que sepas que lo he probado en mi propio sitio y funciona para subir archivos a un servidor web.

PHP Server (uploader.php)

<?php 
$target = "upload/"; 
$target = $target . basename($_FILES['uploaded']['name']); 
$filename = "\"" . basename($_FILES['uploaded']['name']) . "\""; 
$ok = 1; 
if(move_uploaded_file($_FILES['uploaded']['tmp_name'], $target)) 
{ 
    echo "$filename"; 
    echo "was uploaded successfully"; 
} 
else 
{ 
    echo "$filename"; 
    echo "upload failed"; 
} 
?> 

Web Client (index.php)

<form enctype="multipart/form-data" action="uploader.php" method="POST"> 
<input type="hidden" name="MAX_FILE_SIZE" value="100000" /> 
Choose a file to upload: <input name="uploaded" type="file" /><br /> 
<input type="submit" value="Upload File" /> 
</form> 

cacao cliente

El código para el cliente Cacao es bastante largo y el código que va con el abo ve se puede encontrar here. Aquí hay un alternative, que creo que es un mejor código, pero no lo he probado con el servidor PHP anterior. Espero que puedas modificarlo con cambios mínimos, si es que hay alguno.

Aquí es una forma básica en Cocoa para enviar una solicitud POST de texto a un servidor web:

NSString* content = [@"item=" stringByAppendingString:@"Something to 
Post"]; 

    NSURL* url = [NSURL URLWithString:@"http://www.mysite.com/index.php"]; 
    NSMutableURLRequest* urlRequest = [[NSMutableURLRequest alloc] initWithURL:url]; 
    [urlRequest setHTTPMethod:@"POST"]; 
    [urlRequest setHTTPBody:[content dataUsingEncoding:NSASCIIStringEncoding]]; 

me gusta esto porque es una solución mínima y se puede construir sobre ella con facilidad y es de esperar que esto puede ayudar a otra persona si se topan con esto :)

+0

ASIHTTPRequest es excelente (aunque pronto quedará obsoleto) pero a veces esto es todo lo que necesita. Gracias, Brock! – Keller

Cuestiones relacionadas