const char *_cFoo = "bar";
NSString *_foo = [[NSString alloc] initWithCString:_cFoo encoding:NSISOLatin1StringEncoding];
ASIFormDataRequest *request = [[[ASIFormDataRequest alloc] initWithURL:url] autorelease];
[request setPostValue:_foo forKey:@"post_var"];
// ...
[request trigger];
[_foo release];
EDIT: Je ne sais pas pourquoi ne fonctionnerait pas ci-dessus. Je suppose que je devrais essayer. Mais en regardant la source ASIHTTPRequest, la méthode -setPostValue:forKey:
ressemble à cela prend une sous-classe NSObject
pour une valeur POST:
- (void)setPostValue:(id <NSObject>)value forKey:(NSString *)key
{
if (![self postData]) {
[self setPostData:[NSMutableDictionary dictionary]];
}
[[self postData] setValue:[value description] forKey:key];
[self setRequestMethod:@"POST"];
}
convertir Peut-être un NSString
à une chaîne C et utiliser sa représentation NSData
comme la valeur de la variable POST:
NSString *_foo = @"bar";
const char *_cFoo = [_foo cStringUsingEncoding:NSISOLatin1StringEncoding];
NSData *_cFooData = [NSData dataWithBytes:_cFoo length:strlen(_cFoo)];
[request setPostValue:_cFooData forKey:@"post_var"];
Le point est que j'ai déjà un NSString codé UTF8. En suivant votre exemple: c_Foo = [foo UTF8String]; ...... Cela ne fonctionne pas. Je ne reçois pas de chaînes codées ISOLatin1 :-( – Jorge
En faisant cela, j'obtiens des valeurs comme ceci: <6275656e f3212121 2121> dans le formulaire récepteur. – Jorge