NSURL OData URL - PullRequest
       41

NSURL OData URL

0 голосов
/ 09 марта 2020

Я передаю свой URL-адрес OData NSURL следующим образом

NSURL *url = [[NSURL alloc] initWithString:@"https://localhost/odata/Venues?$expand=Fixtures($filter=day(DateTime) eq 9 and month(DateTime) eq 3 and year(DateTime) eq 2020)&$filter=Fixtures/any(f: day(f/DateTime) eq 9 and month(f/DateTime) eq 3 and year(f/DateTime) eq 2020)"];

Этот URL-адрес не принимается NSURL, он становится равным NULL

Когда я даю такой URL-адрес

NSURL *url = [[NSURL alloc] initWithString:@"https://google.com"];

Тогда NSURL принимает URL-адрес ... Я хотел бы знать, как передать URL-адрес моих данных в NSURL.

1 Ответ

1 голос
/ 10 марта 2020

Этот URL содержит несколько символов, которые необходимо экранировать. Это абсолютно не так, как работают URL, и поэтому метод initWithString не работает и возвращает NULL ...

В большинстве случаев я сталкивался с ситуацией, в которой мне нужно было экранировать URL-адрес метода stringByAddingPercentEscapesUsingEncoding было более чем достаточно, так как это были относительно короткие URL. Тем не менее, ваш URL-адрес содержит много символов, которые этот метод не особенно нравится. (Это включает в себя sla sh / и амперсанд &).

Для этого конкретного сценария, вероятно, следующий подход даст лучшие результаты при сохранении его простоты.

NSString* unencodedURLString = @"https://localhost/odata/Venues?$expand=Fixtures($filter=day(DateTime) eq 9 and month(DateTime) eq 3 and year(DateTime) eq 2020)&$filter=Fixtures/any(f: day(f/DateTime) eq 9 and month(f/DateTime) eq 3 and year(f/DateTime) eq 2020)";

NSString* urlString = [unencodedURLString stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];

Пожалуйста, дайте нам знать, если это сработало для вас ...

...