Есть ли альтернатива NSURL?

#ios #nsurl

#iOS #nsurl

Вопрос:

Клиент размышляет о разработке приложения для iPhone и iPad и задал странный вопрос: есть ли какой-либо способ отправить данные с устройства iOS на сервер, кроме использования NSURL?

Комментарии:

1. Почему NSURL не соответствует вашим потребностям?

2. вы уверены, что имеете в виду NSURL? Вы имеете в виду NSURLConnection и NSURLRequest?

3. Вопрос несколько неясен, вы имеете в виду соединения в стиле NSURLConnection целиком? если да, то есть ASIHTTPRequest, если вы просто ссылаетесь на NSURL, то я из highlyc caffeinated, объясните, почему NSURL у вас не работает, и мы сможем предоставить вам качественный ответ.

4. Мне нравится, когда вопросы пытаются создать впечатление, что их задает кто-то другой…

Ответ №1:

Я думаю, вы могли бы попробовать использовать POST-запрос

 responseData = [[NSMutableData data] retain];

NSMutableURLRequest *request = [NSMutableURLRequest 
                                    requestWithURL:[NSURL URLWithString:@"http://www.domain.com/your/servlet"]];

NSString *params = [[NSString alloc] initWithFormat:@"foo=baramp;key=value"];
[request setHTTPMethod:@"POST"];
[request setHTTPBody:[params dataUsingEncoding:NSUTF8StringEncoding]];
[[NSURLConnection alloc] initWithRequest:request delegate:self];
  

Таким образом, данные будут помещаться внутри тела запроса, а не в сам URL-адрес

Ответ №2:

NSURL API не является способом получения данных с сервера. Это просто класс для хранения URL. Я полагаю, что если вы действительно хотите максимально избежать NSURL, вы могли бы хранить URL-адреса в NSString, а затем использовать соответствующие API для преобразования его в NSURL прямо перед его использованием.

Чтобы получить данные с сервера, вы должны использовать либо NSURLSession API (современный), либо NSURLConnection API (довольно грубый). Любой из них является довольно простым способом извлечения данных из URL-адреса HTTP или HTTPS.

Если вы по какой-либо причине не хотите использовать ни один из этих API для извлечения URL-адресов, вы можете написать свой собственный код с помощью сокетов или использовать libcurl (лицензия MIT) и связать его с вашим приложением. Имейте в виду, что если вы пишете свой собственный код сокета или используете libcurl, предполагая, что вы пишете код для iOS, вам нужно будет время от времени использовать высокоуровневые API, такие как NSURL или CFHost, для пробуждения сотового радио.