L'etat, c'est moi
Mere Complexities sells the consulting and development services of me, Paul Wilson.
Conferences
Archive
Escaping Post Parameters in Cocoa/Cocoa-touch (iPhone)
So it turns out that you need to URL encode your Post parameters if you’re doing a HTTP Post from your Objective-C. Who knew? Well probably everyone who has a passing knowledge of rfc3896. I guess I’m just used to browsers and frameworks doing the work for me.
You’d think that the stringByAddingPercentEscapesUsingEncoding method on NSString would be just the ticket. Nope. The two characters you most need to escape, ampersand and plus (&+), are not escaped. What to do? Well you could copy this code I’ve just added to Twitterlink.
-(NSString*)currentMessageUrlEncoded{
CFStringRef encoded = CFURLCreateStringByAddingPercentEscapes(
kCFAllocatorDefault,
(CFStringRef) self.currentMessage,
nil,
@"&+",
kCFStringEncodingUTF8);
return [((NSString*) encoded) autorelease];
}
(Thanks to Jamie Montgomerie for confirming that I was doing the right thing with the autorelease).