2009-05-21 7 views
1

J'ai trouvé de nombreux exemples sur le téléchargement d'un fichier sur un serveur Web via C++ sous Windows.un fichier sur Téléchargement HTTP/HTTPS et/ou FTP/FTPS sur un Mac

Cependant, je me bats après un lot de la recherche (et je pensais que j'étais bon avec Google!) Pour trouver des exemples pour m'aider à réaliser la même chose sur un Mac.

me point Quelqu'un peut-il vers une aide sur la façon de télécharger un fichier sur un serveur Web sur un Mac OS en utilisant C++ ou Objective C?

Il peut être via HTTP/HTTPS ou FTP/FTPS (ou les deux).

Merci!

Répondre

3

Vous pouvez utiliser 'libcurl', voir this article sur Wikipédia.

1

Vous voulez utiliser un NSURLConnection avec un NSMutableURLRequest, quelque chose comme ceci:

NSMutableURLRequest *theRequest=[[NSMutableURLRequest alloc] init]; 
[theRequest addValue:@"attachment;filename=\"file2.gif\"" forHTTPHeaderField:@"Content-disposition"]; 
[theRequest addValue:@"image/gif" forHTTPHeaderField:@"Content-Type"]; 
[theRequest addValue:@"binary" forHTTPHeaderField:@"Content-Transfer-Encoding"]; 
[theRequest setHttpBody:myBodyNSDataObject]; 
// create the connection with the request 
// and start loading the data 
NSURLConnection *theConnection=[[NSURLConnection alloc] initWithRequest:theRequest delegate:self]; 
if (theConnection) { 
    // Create the NSMutableData that will hold 
    // the received data 
    // receivedData is declared as a method instance elsewhere 
    receivedData=[[NSMutableData data] retain]; 
} else { 
    // inform the user that the download could not be made 
} 

Vous pouvez modifier ou les en-têtes définis à l'aide de la méthode NSMutableURLRequest:

- (void)addValue:(NSString *)value forHTTPHeaderField:(NSString *)field 

la réponse sera ce que le serveur revient avec. Vous pouvez vérifier Apple's documentation pour le reste des méthodes de délégué à implémenter pour récupérer le corps de la réponse. Vous devriez avoir l'objet NSData représentant le contenu du fichier que vous voulez télécharger prêt. Faire la même chose en utilisant FTP est un peu plus complexe, mais cela fonctionnera pour publier le corps du fichier. Vous voulez vous assurer que votre objet NSData est configuré comme le corps d'un message HTTP, de sorte que vous configurez les en-têtes comme:

[theRequest addValue:@"attachment;filename=\"file2.gif\"" forHTTPHeaderField:@"Content-disposition"]; 
[theRequest addValue:@"image/gif" forHTTPHeaderField:@"Content-Type"]; 
[theRequest addValue:@"binary" forHTTPHeaderField:@"Content-Transfer-Encoding"]; 

Et alors vous devriez ajouter le corps. Du côté serveur, vous pouvez obtenir le nom du fichier et les octets composant le fichier.

Ce n'est pas exactement le code que vous devez utiliser, mais il devrait vous donner une bonne idée de la façon de procéder.

Questions connexes