Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to make an NSURL that contains a | (pipe character)?

Tags:

iphone

nsurl

I am trying to access google maps' forward geocoding service from my iphone app. When i try to make an NSURL from a string with a pipe in it I just get a nil pointer.

NSURL *searchURL = [NSURL URLWithString:@"http://maps.google.com/maps/api/geocode/json?address=6th+and+pine&bounds=37.331689,-122.030731|37.331689,-122.030731&sensor=false"];

I dont see any other way in the google api to send bounds coordinates with out a pipe. Any ideas about how I can do this?

like image 891
aks Avatar asked Jun 14 '10 20:06

aks


3 Answers

Have you tried replacing the pipe with %7C (the URL encoded value for the char |)?

like image 99
Ben S Avatar answered Sep 21 '22 12:09

Ben S


As stringByAddingPercentEscapesUsingEncoding is deprecated, you should use stringByAddingPercentEncodingWithAllowedCharacters.

Swift answer:

let rawUrlStr = "http://maps.google.com/maps/api/geocode/json?address=6th+and+pine&bounds=37.331689,-122.030731|37.331689,-122.030731&sensor=false"; let urlEncoded = rawUrlStr.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet()) let url = NSURL(string: urlEncoded) 

Edit: Swift 3 answer:

let rawUrlStr = "http://maps.google.com/maps/api/geocode/json?address=6th+and+pine&bounds=37.331689,-122.030731|37.331689,-122.030731&sensor=false"; if let urlEncoded = rawUrlStr.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) {     let url = NSURL(string: urlEncoded) } 
like image 22
Floris M Avatar answered Sep 20 '22 12:09

Floris M


If you want to be safe for whatever weird characters you will put in the future, use stringByAddingPercentEscapesUsingEncoding method to make the string "URL-Friendly"...

NSString *rawUrlStr = @"http://maps.google.com/maps/api/geocode/json?address=6th+and+pine&bounds=37.331689,-122.030731|37.331689,-122.030731&sensor=false";
NSString *urlStr = [rawUrlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *searchURL = [NSURL URLWithString:urlStr];
like image 28
Aviel Gross Avatar answered Sep 18 '22 12:09

Aviel Gross