Как я могу оставаться в системе при просмотре веб-страниц с помощью URLSession? - PullRequest
0 голосов
/ 27 января 2019

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

Я пытался использовать различные типы сеансов, изменять второстепенные части кода и Alamofire безуспешно

import Foundation

let session: URLSession = {
    let configuration = URLSessionConfiguration.default
    configuration.timeoutIntervalForRequest = 30 // seconds
    configuration.timeoutIntervalForResource = 30 // seconds
    return URLSession(configuration: .default)
}()

let url = URL(string: "examplesite.com")!

var request = URLRequest(url: url)

request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: 
"Content-Type")

request.httpMethod = "POST"

let postString = "Email=exampleemail&Password=examplepass"

request.httpBody = postString.data(using: .utf8)

//log in
session.dataTask(with: request) { data, response, error in
  guard let data = data, error == nil else {                                                 
  // check for fundamental networking error
    print("\(error)")
    return
  }

  if let httpStatus = response as? HTTPURLResponse, httpStatus.statusCode 
    != 200 {           // check for http errors
      print("\(httpStatus.statusCode)")
      print("\(response)")
  }

  let responseString = String(data: data, encoding: .utf8)
  print("\(responseString)")

  let urlnext = URL(string: "example.com/HomePage")!
  //get page after loggin in
  session.dataTask(with: urlnext) { datanext, responsenext, errornext in
  guard let datanext = datanext, errornext == nil else {
    print("\(errornext)")
    return
  }

  let stringnext = String(data: datanext, encoding: .utf8)
  //get page html
  print("\(stringnext)")
  }.resume()

  }.resume()

  // Infinitely run the main loop to wait for our request.
  // Only necessary if you are testing in the command line.
RunLoop.main.run()

результаты - успешный вход в систему {\ "msg \":\ "\", \ "valid \": \ "1 \"} и html-код страницы тайм-аута вместо домашней страницы

...