我正在尝试登录(表单)到网站并使用Swift
和NSURLSession
解析数据。
我一直在使用cURL来确认这实际上是可行的,并且以下代码按预期返回网页正文。
curl -c cookie.txt -d "username=karl" -d "password=ivar" https://talkmore.no/talkmore3/servlet/Login
curl -b cookie.txt https://talkmore.no/talkmore3/servlet/SubscriptionUsage
当我尝试在Swift中执行此操作时,我从响应头中获取Cookie,然后尝试通过传递cookie来检索SubscriptionUsage
- 网页。但是我不能让它发挥作用。
如何使用NSURLSession将这个简单的curl语法转换为Swift代码?
编辑:到目前为止我得到了什么。
func login() -> Void {
var session = NSURLSession.sharedSession()
var request = NSMutableURLRequest(URL: NSURL(string: "https://www.talkmore.no/talkmore3/servlet/Login")!)
request.HTTPMethod = "POST"
var params = "username=karl&password=ivar"
request.HTTPBody = params.dataUsingEncoding(NSUTF8StringEncoding)
request.addValue("text/html", forHTTPHeaderField: "Content-Type")
var task = session.dataTaskWithRequest(request, completionHandler: {(data, response, error) -> Void in
println("Response: \(response)")
println("Data: \(NSString(data: data, encoding: NSUTF8StringEncoding)))")
let httpResponse = response as NSHTTPURLResponse
var cookie = httpResponse.allHeaderFields["Set-Cookie"] as String
})
task.resume()
一切似乎都很好,我收到了包含"Set-Cookie" = "JSESSIONID=D8307BA498EFE061C86636C51B8AC25D; Path=/talkmore3/; Secure; HttpOnly";
标题的回复。我相信我必须在下一个请求时发送此Cookie。但我没有复制cURL行为。