NSURL - Set modify path - ios

I need to use a NSURL object to reach different ressources on the same host.
Here is what I do:
#define MY_HOST #"my.server.eu"
NSURL *url = [[NSURL alloc] initWithScheme:#"http" host:MY_HOST path:#"/"];
Now I need to deal with
http://my.server.eu/path1
http://my.server.eu/path2
http://my.server.eu/path3
How can I modify the path of my NSURL object ?
Why can't we simply do url.path = #"path1" ?

How can I modify the path of my NSURL object ?
Why can't we simply do url.path = #"path1" ?
Because NSURL is an immutable object, and you can't change its properties afterwards. NSMutableURL does not exist, but is on the wish list of many.
In order to achieve what you're after, you're going to have to make 3 separate NSURL objects I'm afraid. To do so, you can convenience the paths within an array:
NSString *host = #"http://my.server.eu/";
NSArray *paths = #[#"path1", #"path2", #"path3"];
NSURL *path1 = [NSURL URLWithString:[NSString stringWithFormat:#"%#%#", host, path[0]]];
NSURL *path2 = [NSURL URLWithString:[NSString stringWithFormat:#"%#%#", host, path[1]]];
NSURL *path3 = [NSURL URLWithString:[NSString stringWithFormat:#"%#%#", host, path[2]]];

You should make the base URL as you're doing and then build the others relative to it using +[NSURL URLWithString:relativeToURL:].

Related

Creating a MSSticker with a remote image

I am trying to figure out way to create MSStickers with images that are hosted on the web. I can create MSStickers with local images, e.g.:
NSString *imagePath = [[NSBundle mainBundle] pathForResource: #"image_name"
ofType: #"png"];
NSURL *imageURL = [NSURL fileURLWithPath: urlString];
MSSticker *sticker = [[MSSticker alloc] initWithContentsOfFileURL: stickerURL
localizedDescription: #"my-sticker"
error: &err];
But I cannot do something like this:
NSString *imageURLString = #"https://my-cdn/my-sticker.png";
NSURL *imageURL = [NSURL urlWithString: urlString];
MSSticker *sticker = [[MSSticker alloc] initWithContentsOfFileURL: stickerURL
localizedDescription: #"my-sticker"
error: &err];
No, it's not possible for the moment.
But you can do this, which is not that far from what you want:
Download the picture from your server
Store it on local directory of the device
Use the URL of this local file to create your sticker
Optional : If you don't need the image anymore, erase it from the directory

convert Nsurl Domain to my country domain

how to convert Nsurl Domain to my country domain
Example :
NSURL *url = [NSURL URLWithString:#"http://www.google.com"];
How can get some thing like http://www.google.com.eg
it can detect my zone and change it with my domain zone, if website support multi zones domain.
If there isn't a path in the url just append .eg to the end of the string.
NSString *newCountryString = [[url absoluteString] stringByAppendingString:#".eg"];
NSURL *newCountryUrl = [NSURL URLWithString:newCountryString];
If the url has a path do this:
NSString *host = [url host];
NSString *domain = [[host componentsSeparatedByString:#"."] lastObject];
NSString *newCountryString = [[url absoluteString] stringByReplacingOccurrencesOfString:domain withString:[domain stringByAppendingString:#".eg"]];
NSURL *newCountryUrl = [NSURL URLWithString:newCountryString];

How to decode NSURL in iOS?

i am NewBie in iOS Development. I want to Decode my NSURL With Pagination Here my Url Like as
http://www.janvajevu.com/webservice/categorylist.php?category=%E0%AA%B8%E0%AB%8D%E0%AA%B5%E0%AA%BE%E0%AA%B8%E0%AB%8D%E0%AA%A5%E0%AA%AF&page=0
And i Decode this URL Like as
NSURL *urls = [NSURL URLWithString:#"http://www.janvajevu.com/webservice/categorylist.php?category=%E0%AA%B8%E0%AB%8D%E0%AA%B5%E0%AA%BE%E0%AA%B8%E0%AB%8D%E0%AA%A5%E0%AA%AF&page=0"];
NSString *urlString = [urls absoluteString];
NSLog(#"UrlString %#",urlString);
NSURL * url=[NSURL URLWithString:urlString];
But it Give me Only 0 Page Url i want to Like as make my url as
NSURL *urls=[NSURL URLWithString:#"My Url &page=%d",pagenum];
Here i want at place of My Url as Decoding of my Original Url If it is Possible then Please Give me Solution for it.
you are doing it in wrong way.
this is the right way
NSString *urlString = #"http://www.janvajevu.com/webservice/categorylist.php?category=%E0%AA%B8%E0%AB%8D%E0%AA%B5%E0%AA%BE%E0%AA%B8%E0%AB%8D%E0%AA%A5%E0%AA%AF&page=";
NSURL *targetURL = [NSURL URLWithString:[NSString stringWithFormat:#"%#%d",urlString,pageNumber]];
NSLog(#"targetURL is : %#",targetURL);
Hope this will help you..
NSString *str=#"http://www.janvajevu.com/webservice/categorylist.php?category=%E0%AA%B8%E0%AB%8D%E0%AA%B5%E0%AA%BE%E0%AA%B8%E0%AB%8D%E0%AA%A5%E0%AA%AF&page=0";
NSString *result =[str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *urls = [NSURL URLWithString:result] ;

too many arguments to method call expected 1 have 3

Please help me to find the error, my code is
NSURL *url = [NSURL URLWithString: #"http://www.xxxx.com/xxxx_webservice/login.php?user=%#&pass=%#&format=json",Username,Password];
Do it like this. First make a proper string of your URL and then encode it and then finally make it a NSURL. Make sure your passing the correct and right set of parameters.
NSString *link = [NSString stringWithFormat:#"http://www.example.com/xx_webservice/login.php?user=%#&pass=%#&format=json",Username,Password];
NSString *encdLink = [link stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *url=[NSURL URLWithString:encdLink];

NSURL object value is null

I am generating a URL as given by string parameters but url gives null value.
For generating URL I have implemented the following code .
NSURL *url = [[NSURL alloc] init];
NSString *strURL = #"ftp://Administrat:ABC(R%-#TRDOP#xx.xx.xx.xx/arrows.png";
url = [NSURL URLWithString:[NSString stringWithString:strURL]];
NSLog(#"URL :: %#",url);
Thanks
You need to escape the special characters in the url query string.
Use:
NSString *strURL = #"ftp://www.jerox.com/Administrator:#123#TRDOP#%$/arrows.png";
strURL =[strURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *url = [NSURL URLWithString:strURL];
NSLog(#"URL :: %#",url);
Also I need to mention some mistakes in your code:
No need to allocate and init the NSURL object, because you are again assigning another object to that pointer
No need of using stringWithString: there
Make use of the following code.
NSString *sURL = #"ftp://www.jerox.com/Administrator:#123#TRDOP#%$/arrows.png";
NSURL *url = [[NSURL alloc] initWithString:[sURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSLog(#"URL :: %#",url);
From your posted code sample, here is the problem:
NSString *strURL = #"ftp://Administrat:ABC(R%-#TRDOP#xx.xx.xx.xx/arrows.png";
Look carefully at the authority component (username, password and host). An # symbol is used in URLs to separate username & password from the host. Because your password contains an # character, it must be percent escaped. The percent encoding of # is %40, giving you instead the code:
NSString *strURL = #"ftp://Administrat:ABC(R%-%40TRDOP#xx.xx.xx.xx/arrows.png";
You really ought to be escaping other URL-specific characters in there too, like the lone % symbol.

Resources