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.