首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >swift cookies urlsession请求

swift cookies urlsession请求
EN

Stack Overflow用户
提问于 2017-11-03 04:48:14
回答 1查看 1.3K关注 0票数 0

我有一个在php的webapi,这是工作很好。现在我想在我的应用程序中使用它。Webapi使用cookies进行身份验证。所以我第一次创建登录任务并保存响应中的cookie。

保存任务:

代码语言:javascript
复制
function testLogin(){
 let loginUrlstring = ".../webapi/login.php"
 let passwordom = ""
 let emailem = ""

 guard let url = URL(string: loginUrlstring) else { return }

    let postString = "email=" + emailem + "&pw=" + passwordom

    var urlRequest = URLRequest(url: url)
    urlRequest.httpMethod = "POST"
    urlRequest.httpShouldHandleCookies = true
    urlRequest.httpBody = postString.data(using: String.Encoding.utf8)     

    let session = URLSession.shared
    let task = session.dataTask(with: urlRequest) { (data, response, error) in
        self.saveCookies(response: response)
        print("cookies mentve")
        print(response?.url)
    }
    task.resume()}

现在我想使用cookie并创建请求来获取一些数据:数据下载任务:

代码语言:javascript
复制
let probaUrl = "http://.../data.php"
let postString = "table=SomeTableName&key=someFieldID&value=20"
guard let url = URL(string: probaUrl) else { return }

loadCookies()
let cookiesArray = HTTPCookieStorage.shared.cookies
let headers = HTTPCookie.requestHeaderFields(with: cookiesArray!)


var urlRequest = URLRequest(url: url)
urlRequest.httpMethod = "GET"//"POST"
urlRequest.httpShouldHandleCookies = true
urlRequest.httpBody = postString.data(using: String.Encoding.utf8)
urlRequest.allHTTPHeaderFields = headers

var session = URLSession(configuration: .default)
session.configuration.httpCookieAcceptPolicy = .always

session.configuration.httpAdditionalHeaders = headers
let task = session.dataTask(with: urlRequest) { (data, response, error) in
    print(response)
    print(data)
    if let data2 = data, let utf8Text = String(data: data2, encoding: .utf8) {
        print("Data: \(utf8Text)") // original server data as UTF8 string
    }
}
task.resume()

并显示:已完成错误代码:-1001打印数据- nil我的错误在哪里?

EN

回答 1

Stack Overflow用户

发布于 2017-11-04 02:35:55

您应该打印发生的确切错误以了解哪里出了问题我是说let task = session.dataTask(with: urlRequest) { (data, response, error) in ...中的print(error)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47084384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档