我使用HTTP代理客户端和NSURLRequest
+NSURLConnection
发送了同样的HTTP消息,但得到了不同的结果。这是一个身份验证请求。从HTTP代理身份验证请求被接受,而从应用程序发送的则没有。为什么?"被接受"意味着重定向后的HTML中不包含Oops
子字符串。
let url = NSURL(string: "http://www.swisshttp.weact.ch/en/user/login")
let request = NSMutableURLRequest(URL: url)
request.HTTPMethod = "POST"
request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
let email2 = (viewController!.email.text as NSString).stringByReplacingOccurrencesOfString("@", withString: "%40")
let str = "name=\(email2)&pass=\(viewController!.password.text)&form_id=user_login" as NSString
let d = str.dataUsingEncoding(NSUTF8StringEncoding)
if let d2 = d {
request.HTTPBody = d2
let urlConnection = NSURLConnection(request: request, delegate: self)
}
更新
我已经将 @teamnorge 的代码放进 Playground 和空的单视图应用程序项目中。在项目中返回的 HTML 包含了 Oops
子字符串,而在 Playground 中使用的代码则不包含它。有什么想法是怎么回事,为什么同样的请求会产生不同的 HTML 结果?我从 iOS 设备和模拟器中都收到了 failed
消息。
更新
移除了像这里推荐的 NSURLRequest
缓存,但仍未按预期工作。还有这里。
更新
尝试移除所有的凭据,如这里所述,但没有帮助,没有发现任何凭证。