2017-03-05 3 views
0

Je l'ai fait une NSString d'un objet NSData:Comment enregistrer les données de forme Content-Disposition à NSString

NSData* data = request.HTTPBody; 
    NSString* s = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 

Maintenant, j'ai le NSString qui m'a donné la NSLog suivante:

WebKitFormBoundaryA7rpc3udSxxsvBFm 

Content-Disposition: form-data; name="username" 

Testusernamevalue 

------WebKitFormBoundaryA7rpc3udSxxsvBFm 

Content-Disposition: form-data; name="password" 

Testpasswordvalue 

------WebKitFormBoundaryA7rpc3udSxxsvBFm-- 

Comment puis-je enregistrer ces deux valeurs de "nom d'utilisateur" et "mot de passe" dans un seul NSString pour nom d'utilisateur et mot de passe?

Merci pour votre aide. Cordialement Eddi

+0

Pour être sûr que je comprends, vous avez une longue chaîne qui inclut des retours à la ligne, et vous aimeriez y trouver deux chaînes délimitées par name = "*"? Comment saurez-vous quel est le nom et quel est le mot de passe? – danh

+0

Non J'ai des problèmes avec les caractères spéciaux dans une forme php. J'ai donc changé le formulaire en enctype = "multipart/form-data". Puis j'ai obtenu les valeurs du formulaire après name = "username" et après name = "password". J'ai juste besoin de deux NSStrings avec les valeurs "Testusernamevalue" et "Testpasswordvalue" (par exemple dans le premier post) – Eddi

Répondre

0

Je pense que je comprends la question pour signifier que nous voulons les valeurs de chaîne sur les lignes qui suivent les lignes "Content-Disposition". Pour cela, nous aurons besoin de marcher à travers les lignes, en gardant l'état de trouver les lignes de délimitation et leur type (nom d'utilisateur ou mot de passe)

NSArray *components = [theLongContentDispositionString componentsSeparatedByString:@"\n"]; 
NSMutableDictionary *values = [NSMutableDictionary dictionary]; 

NSString *key = nil; 
for (NSString *line in components) { 
    if (key && line.length) { 
     values[key] = line; 
     key = nil; 
    } else if ([line hasPrefix:@"Content-Disposition"]) { 
     // does the line contain "username"? Assume password if not 
     NSRange r = [line rangeOfString:@"username"]; 
     key = (r.location == NSNotFound)? @"password" : @"username"; 
    } 
} 

Le dictionnaire des valeurs devrait finir par ressembler à:

{ 
    password = "non-empty line after Content-Disposition line with password"; 
    username = "non-empty line after Content-Disposition line with username"; 
} 
+0

Merci pour votre réponse. Ça m'aide plus loin. – Eddi

+0

@Eddi - bien sûr. Cela est généralement exprimé en marquant la réponse correcte. – danh