如何将cURL表单登录代码转换为Swift

时间:2015-01-26 15:46:11

标签: forms swift curl cookies nsurlsession

我正在尝试登录(表单)到网站并使用SwiftNSURLSession解析数据。

我一直在使用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行为。

0 个答案:

没有答案