2010-11-25 7 views
1

J'ai ce formulaire html pour passer mes données de l'iphone au serveur web .. mais je suis coincé comment construire cette forme/données dans une demande mutable. Pouvez-vous pls. conseille-moi.Formulaire de demande d'URL

forme Html:

<html> 
<form method="post" action="https://mysite.com"> 
<input type="hidden" name="action" value="sale"> 
<input type="hidden" name="acctid" value="TEST123"> 
<input type="hidden" name="amount" value="1.00"> 
<input type="hidden" name="name" value="Joe Customer"> 
<input type="submit"> 
</form> 
</html> 

Je ne sais pas comment assigner à la demande d'URL la "valeur" à la clé spécifique (ex action acctid, le montant, le nom.) ???

Ceci est mon code:

NSString *urlString = @"https://mysite.com"; 
NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:urlString]]; 

NSString *post = [[NSString alloc] initWithFormat:@"%@%@&%@%@&%@%@&%@%@", 
    action, sale, 
    acctid, TEST123, 
    amount, 1.00, 
             name, Joe Customer]; // ???? 

NSData *postData = [post dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];  
NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]]; 

[urlRequest setHTTPMethod:@"POST"]; 
[urlRequest setValue:postLength forHTTPHeaderField:@"Content-Length"]; 
[urlRequest setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; // multipart/form-data 
[urlRequest setHTTPBody:postData]; 

Répondre

3

semble correcte, même si vous manquez certains signes égal dans votre chaîne de format, et vous avez besoin d'envelopper vos arguments de chaîne en @"":

NSString *post = [[NSString alloc] initWithFormat:@"%@=%@&%@=%@&%@=%@&%@=%@", 
    @"action", @"sale", 
    @"acctid", @"TEST123", 
    @"amount", @"1.00", 
    @"name", @"Joe Customer"]; 

Pour une solution plus extensible, vous pouvez stocker vos paires clé/valeur dans un dictionnaire, puis faire quelque chose comme ceci:

// Assuming the key/value pairs are in an NSDictionary called payload 

NSMutableString *temp = [NSMutableString stringWithString:@""]; 
NSEnumerator *keyEnumerator = [payload keyEnumerator]; 
id key; 
while (key = [keyEnumerator nextObject]) { 
    [temp appendString:[NSString stringWithFormat:@"%@=%@&", 
     [key description], 
     [[payload objectForKey:key] description]]]; 
} 
NSString *httpBody = [temp stringByTrimmingCharactersInSet: 
    [NSCharacterSet characterSetWithCharactersInString:@"&"]]; 

(Gardez à l'esprit que vous devrez peut-être encoder les clés et les valeurs URL.)

+0

a obtenu .. Merci Simon .. –

Questions connexes