开发者

UIApplication OpenUrl double-escaping my URLs

开发者 https://www.devze.com 2023-01-18 05:00 出处:网络
Basically, i\'m trying to program a \"tweet this\" button from inside my application.Depending on their spot in the application, they can click the tweet button and it\'ll shoot them out to Safari wit

Basically, i'm trying to program a "tweet this" button from inside my application. Depending on their spot in the application, they can click the tweet button and it'll shoot them out to Safari with a tweet message that changes depending on where they are.

In order to create URLs, I have to escape the query string that I want to put in the NSUrl object. So, I do this:

NSString* escapedTweet = [@"Some String With Spaces" stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];

After concatenating the base, my url comes out "http://www.twitter.com/home/?status=Some&20String%20With%20Spaces" - looked at it in the debugger and this is definitely the value (as expected). Now, I create my URL and launch safari:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:escapedUrlString]];
开发者_StackOverflow

But here's where the issue comes up: OpenUrl appears to be escaping my percent signs, so the actual URL that Safari goes to is "http://www.twitter.com/home/?status=Some%2520String%2520With%2520Spaces", which is obviously a problem since twitter creates the status message as "Some%20String%20With%20Spaces".

NSUrl will NOT allow me to create a URL with spaces in it, so i'm completely lost as to how to get my URLs to just include a %20. Has anyone else run into this issue or found a workaround?

I'm running on an iPad with an up to date OS, not sure if it's the same issue on the iPhone.

Edit: In a nutshell, how do I get openUrl to open http://www.twitter.com/home/?status=Some%20Url%20With%20Spaces without escaping my percent signs and creating a URL like http://www.twitter.com/home/?status=Some%2520Url%2520With%2520Spaces?


I am assuming that escapedUrlString is declared as NSURL *escapedUrlString = [NSURL URLWithString:escapedTweet];. Then your problem probably lies in openURL:[NSURL URLWithString:escapedUrlString]];, because you’re taking an URL, passing it into another URL and then opening it. Fix by passing in escapedURLString (which should be named ‘escapedURL’) instead of URLWithString:….

0

精彩评论

暂无评论...
验证码 换一张
取 消