2009-07-25 17 views
9

Sono programmatore con giochi e grafica 3D e al momento mi piacerebbe rispolverare le mie capacità di sviluppo di reti e web.Invia richiesta HTTP iPhone al server web Apache PHP

Ho un compito che mi piacerebbe realizzare per fare questo. La mia idea è che mi piacerebbe essere in grado di inviare una richiesta HTTP o qualcosa di simile al mio server web, che esegue un'installazione basata su LAMP. Mi piacerebbe sapere come posso inviare una richiesta HTTP contenente alcune informazioni dal mio iPhone utilizzando il framework Cocoa Touch, al mio server web.

Desidero che il server web (utilizzando PHP) sia in grado di registrare le informazioni inviate in un file di testo semplice, che posso utilizzare successivamente per creare grafici. Per il mio esempio potremmo semplicemente inviare la data corrente.

Penso che le persone debbano farlo molto spesso e voglio davvero sapere come farlo. Grazie per l'aiuto.

P.S. Se non conosci il codice Cocoa per inviare la richiesta, va bene, sono sicuro di poterlo capire, ma vorrei almeno sapere come ottenere il server Linux per salvare la richiesta HTTP, preferibilmente PHP ma un altro linguaggio appropriato va bene. Bonus contrassegni per trasferirsi in modo sicuro .

anche: Io sono un noob totale a questo e richiedono il codice sorgente, applausi: D

risposta

11

Davvero non si può andare oltre una libreria come ASIHTTPRequest se è necessario effettuare richieste HTTP da un client iPhone o Mac a un server web. La documentazione è molto buona, e copre tutti i temi importanti come:

  • asincrono vs richieste sincrone
  • l'invio dei dati al server
  • monitoraggio upload/download progresso
  • autenticazione movimentazione
  • utilizzando il portachiavi per l'archiviazione delle credenziali
  • corpi di richiesta di compressione con gzip

Si dovrebbe check it out - renderà la tua vita molto più facile.

+0

Grande verificato, sembra bello +1 –

-1

Non proprio un lato ragazzo server, ma l'invio della richiesta HTTP può essere realizzato in un paio di modi. La cosa più semplice è usare + NSString stringWithContentsOfURL: e usare i parametri GET nell'URL. Ciò colpirà il server all'URL specificato e i parametri GET possono contenere i dati. Il valore restituito può essere ignorato e probabilmente dovrebbe essere minimo.

Al momento non lo si analizzerà in profondità, ma credo che si utilizzi NSStream e NSURLRequest per creare query più complesse, ad esempio utilizzando il POST.

+0

"Non lo cercherò in profondità adesso" -> Allora perché hai postato qui? – twerdster

9

Ok nessuno ha dato una risposta, quindi sono partito e ho scoperto un progetto che spiega come farlo usando un'app nativa per Mac per un client o un client di pagine Web PHP. Ho modificato leggermente il codice del server originale, solo per sapere che l'ho provato sul mio sito e funziona per caricare file su un server 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 client

Il codice per il client di cacao è piuttosto lungo e il codice che accompagna l'abo ve può essere trovato here. C'è uno alternative qui, che penso sia un codice migliore, ma non l'ho testato con il server PHP sopra. Mi aspetto che tu possa modificarlo con modifiche minime se ce ne sono comunque.

Ecco un modo semplice in Cocoa per inviare una richiesta di testo POST a un server 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]]; 

Mi piace questo perché è una soluzione minima e si può costruire su di essa in modo semplice e spero che questo ci riesce aiutare qualcun altro nel caso in cui si imbattesse in questo :)

+0

ASIHTTPRequest è ottimo (anche se presto sarà deprecato) ma a volte questo è tutto ciò di cui hai bisogno. Grazie, Brock! – Keller

Problemi correlati