2015-08-05 2 views
0

Я довольно новичок в Swift, а также очень новичок в JSON и REST. Я пытаюсь проверить учетные данные, переданные пользователем, и проверить правильность учетных данных, а затем распечатать некоторые данные JSON на экране. Все, что я нашел в Интернете по этому поводу, похоже, связано с простым json api url с ключом api без каких-либо учетных данных.Swift: REST JSON Получить запрос с аутентификацией

В принципе у меня есть такой url: https://ipaddresshere/yii_entry.php/rest/info И я буду пользователем имени пользователя, таким как: Bob и пароль, например: examplePass.

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

+0

Ссылку вы предоставили не действительный URL ... Что API вы используете? Они должны иметь документацию, чтобы показать, какой ответ будет для ошибки или успеха. – RhapX

+0

@RhapX извините форматирование stackoverflow. Я обновил его сейчас. – user3459799

+0

Обычно это делается с помощью POST. Вам нужна помощь JAVA при анализе REST или JSON. Если вам нужно разобрать JSON для почтового запроса, как логина, я могу с этим помочь. – modesitt

ответ

2

Этот запрос на вход и регулярное сообщение. Это зависит от файла SwiftyJSON. Я рекомендую вам загрузить его и добавить в свой проект для любого анализа JSON. https://github.com/SwiftyJSON/SwiftyJSON. Попробуйте загрузить расширение браузера в chrome, называемое почтальоном, для работы с JSON и REST. Это пример отправки запроса для входа в систему и общий почтовый запрос. Они идут в модальном быстром файле.

func loginRequest(username: String!, password: String!, completionHandler: ((NSURLResponse!, JSON, NSError?) -> Void)) { 
     var request : NSMutableURLRequest = NSMutableURLRequest() 
     let url: String! = "http://yourRestURL/login/\(username)/\(password)" 
     println(url) 
     request.URL = NSURL(string: url) 
     request.HTTPMethod = "POST" 
     NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue(), completionHandler:{ (response:NSURLResponse!, data: NSData!, error: NSError!) in 
      var json = JSON(data: data!) 
      println(json) 
      completionHandler(response, json, error) 
     }) 
    } 

func postRequest(resourceURL: String!, completionHandler: ((NSURLResponse!, JSON, NSError?) -> Void)) { 
     var request : NSMutableURLRequest = NSMutableURLRequest() 
     request.URL = NSURL(string: resourceURL) 
     request.HTTPMethod = "POST" 

     NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue(), completionHandler:{ (response:NSURLResponse!, data: NSData!, error: NSError!) in 
      var json = JSON(data: data!) 
      completionHandler(response, json, error) 
     }) 

Если вы настаиваете на GET: URL-адрес ресурса - это URL-адрес запроса на получение.

func getRequest(resourceURL: String!, completionHandler: ((NSURLResponse!, JSON, NSError?) -> Void)) { 
     var request : NSMutableURLRequest = NSMutableURLRequest() 
     request.URL = NSURL(string: resourceURL) 
     request.HTTPMethod = "GET" 

     NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue(), completionHandler:{ (response:NSURLResponse!, data: NSData!, error: NSError!) in 
      var json = JSON(data: data!) 
      completionHandler(response, json, error) 
     }) 

    } 

Использование: В вашем VC:

func parseLoginRequest (usernameGiven: String, passwordGiven: String, sender: AnyObject?) { 
     println("parsing") 

     modal.loginRequest(usernameGiven, password: passwordGiven) { (response, json, error) in 
      // parse it :) 

}) 
+0

Пытается использовать функцию loginRequest, и у меня возникают некоторые проблемы. Я пытаюсь выполнить это против https-url в моей частной сети. Кроме того, при навигации по странице я получаю самозаверяющий сертификат при первом открытии сеанса браузера. Я в настоящее время пытаюсь использовать этот url: let url: String! = "https: // \ (ipAddressField.text) /yii_entry.php/rest/case/ \ (имя пользователя)/\ (пароль)" и У меня возникает следующая ошибка: NSURLConnection/CFURLConnection Ошибка загрузки HTTP (kCFStreamErrorDomainSSL, -9807) Любые идеи? – user3459799

+0

@ user3459799 - временная ошибка DNS. Убедитесь, что сертификаты находятся на вашем устройстве. Является ли сообщение успешным с чем-то вроде POSTMan? – modesitt

+0

Удостоверьтесь, что у вас есть и почта тоже. – modesitt

Смежные вопросы