Форум программистов, компьютерный форум CyberForum.ru

Swift

Войти
Регистрация
Восстановить пароль
 
 
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,648
Завершенные тесты: 1
#1

Http request - Swift

26.11.2015, 13:08. Просмотров 903. Ответов 25
Метки нет (Все метки)

Здравствуйте. Как получить ответ от сервера по url, без всяких асинхронных конструкций? Да, я знаю что нужно все подобные операции делать асинхронно, но мне нужно послать 10 запросов по очереди и если для каждого писать код в блоках получается очень длинная и не читаемая простыня. Поискал информацию - везде говорят, что можно только асинхронно, но как тогда поступают в ситуациях похожих на мою?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.11.2015, 13:08     Http request
Посмотрите здесь:

Отправка HTTP (не HTTPS) запроса в Swift 2.0 с использованием NSURLSession - Swift
Доброго времени суток. Возникла проблема с отправкой POST запроса по http. Проблема в том, что несмотря на request.HTTPMethod =...

Выполнение http.request http.get - Node.js
О задаче: Начну с того что мне нужно сделать, мне нужно получить из формы url-адресс и выполнить http.request на этот адресс, после чего...

Http Request - PHP
Всем хай разбераюсь с одним google api, и к нему нету библиотеки пока никакой... В документации написанно надо посылать такого вида...

http request response - C++ Qt
имею код... void MainWindow::replyFinished(QNetworkReply *r){ QString str = r->readAll(); } void...

Http Server request - Delphi
Всем привет, подскажите как через IdHTTPServer сделать запросы, то есть чтобы при запросе в браузере к примеру 127.0.0.1/message у меня...

Http request librare - PHP
такая ситуация: есть 3 сайта на разных хостах. для того чтобы пользователь зарегистрировавшись на одном получал учетку и на 2 других...

обработка Http request в фоновом потоке - Java
Привет! Необходимо следующее: приходит http запрос на сервер, если его обработка длится больше N сек., то редиректим на страницу...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vorona
Peace 2 all shining faces
668 / 530 / 45
Регистрация: 05.03.2010
Сообщений: 1,276
29.11.2015, 12:44     Http request #16
Сообщение было отмечено автором темы, экспертом или модератором как ответ
есть такой паттерн как Promise или Future,
суть такая же как и с колбеками, только это грубо говоря колбеки, обернутые в объекты, над которыми можно проводить разные операции типа компановок и т.д
https://github.com/mxcl/PromiseKit

а есть еще интересней вещь, называется функциональное реактивное программирование (FRP)
грубо говоря, это промисы представленные во времени и с кучей богатейшего функционала
https://github.com/ReactiveCocoa/ReactiveCocoa
https://github.com/ReactiveX/RxSwift

Не хотел нагружать кучей всего, но, по моему мнению, это маст хев знания в современном мире разработки

Добавлено через 2 минуты
Цитата Сообщение от AncientPenguin Посмотреть сообщение
Да хоть:
послатьЗапрос1()
послатьЗапрос2()
...
послатьЗапрос10()
Не очень понимаю в чем проблема.
проблема в адище, который называют callback hell
LeninRedStar
5 / 5 / 4
Регистрация: 22.11.2015
Сообщений: 21
29.11.2015, 13:15     Http request #17
а почему sendSynchroniusRequest у NSURLConnection не катит?
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,648
Завершенные тесты: 1
03.12.2015, 10:25  [ТС]     Http request #18
Цитата Сообщение от LeninRedStar Посмотреть сообщение
а почему sendSynchroniusRequest у NSURLConnection не катит?
Что-то не вышло завести его на свифте под иос 9.1. Тот же самый код на obj-c работает, не знаю с чем связано, сильно не копал. Ну и насколько я понял через него не послать POST запрос.
LeninRedStar
5 / 5 / 4
Регистрация: 22.11.2015
Сообщений: 21
03.12.2015, 22:29     Http request #19
да, действительно этот метод задепрекейчен. Можно тогда действительно заюзать аналоги промисов, или например BFTask. Еще вариант правильно сказали обернуть в операцию, внутри операции заюзать какие нибудь dispatch группы или семафоры, чтобы сделать main метод синхронным. Потом эти операции нужно запускать на бекграундной очереди, им можно зависимости настраивать, в общем возможностей прилично.
AncientPenguin
98 / 45 / 18
Регистрация: 09.08.2015
Сообщений: 367
04.12.2015, 00:22     Http request #20
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class facepalm
{
    func fakerequest1()
    {
        var request1 = {
            () -> () in
            self.fakerequest2()
        }
    }
    
    func fakerequest2()
    {
        var request2 = {
            () -> () in
            self.fakerequest3()
        }
    }
    
    func fakerequest3()
    {
        var request3 = {
            () -> () in
            // ...
        }
    }
}
Тега swift не нашел.
Vorona
Peace 2 all shining faces
668 / 530 / 45
Регистрация: 05.03.2010
Сообщений: 1,276
04.12.2015, 04:23     Http request #21
AncientPenguin, вот серьезно, зачем выдумывать такой ущербный велосипед, если есть такие прекрасные решения, как промисы и сигналы, которыми сейчас весь продвинутый мир пользуется?

не легче сесть, прочитать и выучить один раз, чем каждый раз такую галимотью выдумывать?
AncientPenguin
98 / 45 / 18
Регистрация: 09.08.2015
Сообщений: 367
04.12.2015, 12:33     Http request #22
Цитата Сообщение от Vorona Посмотреть сообщение
не легче сесть, прочитать и выучить один раз, чем каждый раз такую галимотью выдумывать?
Лишняя функция vs лишний паттерн, и с чего вы взяли что написать паттерн (а там точно не повторно используемый код, 10 связанных запросов подряд) проще?
Vorona
Peace 2 all shining faces
668 / 530 / 45
Регистрация: 05.03.2010
Сообщений: 1,276
04.12.2015, 23:03     Http request #23
Цитата Сообщение от AncientPenguin Посмотреть сообщение
Лишняя функция vs лишний паттерн
ахах весь мир этим пользуется, потому что это лучшее на сегодня для подобных задач (упоминал про стримы, но они лучше подходят для более сложных конструкций, хотя и тут будут как влитые)
изучая паттерн, вы изучаете оптимальное решение и можете генерировать новые на его основе, а когда пишете очередную "функцию" (хотя в вашем случае это просто суп из методов), вы каждый раз тратите время на решения одной и той же задачи, можете еще велосипед и колесо каждое утро придумывать, судя вашей логике.
потому что суть в переиспользовании существующих решений, протестированных и проверенных, а не решении тривиальных задач через жопу.

используя такие решения как промисы, можно запросто и без труда компоновать асинхронные операции, писать декларативный и очевидный код, вы же написали полную ересь, за которую вас бы скорее уволили из более менее адекватной комманды.

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

Objective-C
1
2
3
4
5
sendRequest1()
    .then(sendRequest2)
    .then(sendRequest3)
    .completed(notifyAboutCompletion)
    .failured(notifyAboutFailure)
vs

Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class facepalm
{
    func fakerequest1()
    {
        var request1 = {
            () -> () in
            self.fakerequest2()
        }
    }
    
    func fakerequest2()
    {
        var request2 = {
            () -> () in
            self.fakerequest3()
        }
    }
    
    func fakerequest3()
    {
        var request3 = {
            () -> () in
            // ...
        }
    }
}
а завтра вам надо их использовать в другом порядке, обрабатывать ошибки и вставлять промежуточные операции между ними, я поменяю одну строчку, вы же - перелопатите весь класс, что, кстати, противоречит SOLID, если слышали о таком

не позорились бы...
AncientPenguin
98 / 45 / 18
Регистрация: 09.08.2015
Сообщений: 367
05.12.2015, 07:11     Http request #24
Цитата Сообщение от Vorona Посмотреть сообщение
а завтра вам надо их использовать в другом порядке, обрабатывать ошибки и вставлять промежуточные операции между ними, я поменяю одну строчку, вы же - перелопатите весь класс, что, кстати, противоречит SOLID, если слышали о таком
Цитата Сообщение от Spelcrawler Посмотреть сообщение
И в каждом случае есть несколько вариантов дальнейшего поведения. Т.е. куча проверок на все что можно сбор разных параметров с разных запросов и использование этих параметров в дальнейших запросах.
Может вы сначала условия задачи прочтете прежде чем рассказывать что ваш паттерн в 150% ситуаций лучше.

Добавлено через 14 минут
Кстати:

Цитата Сообщение от Vorona Посмотреть сообщение
а завтра вам надо их использовать в другом порядке, обрабатывать ошибки и вставлять промежуточные операции между ними, я поменяю одну строчку, вы же - перелопатите весь класс
Там связанные функции и я легко могу вставить функцию между ними так же как и элемент в связный список, но то что вы этого не заметили намекает...
Vorona
Peace 2 all shining faces
668 / 530 / 45
Регистрация: 05.03.2010
Сообщений: 1,276
05.12.2015, 22:47     Http request #25
Насчет того читал ли я тз, естественно, промисы и стримы тут подходят не на 150 а на все 300%, но вы сильно умный чтобы в этом разбираться, лучше напишите пару говнофункций.

Ох ладно, что со стеной общаться, удачи вам в вашем "развитии".
Надеюсь ваши советы никто не будет слушать, иначе будут с вами костер палочками разжигать.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.12.2015, 21:46     Http request
Еще ссылки по теме:

Http POST request, wininet, winsock - C++ WinAPI
Значит так. Есть PHP скрипт, выводящий все параметры, переданные в запросе. <?php echo "hello!\r\n"; var_dump($_REQUEST); ...

The request failed with HTTP status 401: Unauthorized - PHP
Здраствуйте! При попытке вызвать веб сервис из php возникает ошибка "The request failed with HTTP status 401: Unauthorized", причем...

VK API, IdHTTP1, http/1.1 400 bad request - C++ Builder
Пытаюсь отправить файл во ВКонтакте //Получаем сервер для загрузки изображения String Publ = Edit2->Text; String Token =...

HTTP Error 400. The request hostname is invalid - nginx
Всем привет! Если запускать html файлы то все нормально, но если php то: Bad Request - Invalid Hostname HTTP Error 400. The...

Ошибка Маппинга: No mapping found for HTTP request with URI - Java EE
Добрый день, постоянно натыкаюсь на ошибку: No mapping found for HTTP request with URI in DispatcherServlet. В упор не могу понять,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
AncientPenguin
98 / 45 / 18
Регистрация: 09.08.2015
Сообщений: 367
06.12.2015, 21:46     Http request #26
Vorona,

Не по теме:

и вам добра. На будущее, либо цитируйте часть сообщения либо в ник жмите когда кому то отвечаете, а то сообщения не приходят.

Yandex
Объявления
06.12.2015, 21:46     Http request
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru