Ios 特定网站的基本NSURLSession用法
我几乎不好意思问,但我正试图为自己构建一个小应用程序,而我却被错综复杂的网络技术绊倒了 我需要帮助的不是Swift,更重要的是方法学 我正在按程序登录这里 这只是一个英国网站,让你检查你的旅行卡余额 我不喜欢网络内容,但我相信我需要点击的帖子URL是: (从查看页面开始) 但是,下面的代码只是不断返回一个200 OK,但是web服务器出现一个错误,表示该页面不可用。当然这个网站只是一个简单的通过POST登录 任何洞察都将是伟大的——哪怕只是一个指向正确方向的指针谢谢。。。目前的方法如下:Ios 特定网站的基本NSURLSession用法,ios,swift,post,nsurlsession,Ios,Swift,Post,Nsurlsession,我几乎不好意思问,但我正试图为自己构建一个小应用程序,而我却被错综复杂的网络技术绊倒了 我需要帮助的不是Swift,更重要的是方法学 我正在按程序登录这里 这只是一个英国网站,让你检查你的旅行卡余额 我不喜欢网络内容,但我相信我需要点击的帖子URL是: (从查看页面开始) 但是,下面的代码只是不断返回一个200 OK,但是web服务器出现一个错误,表示该页面不可用。当然这个网站只是一个简单的通过POST登录 任何洞察都将是伟大的——哪怕只是一个指向正确方向的指针谢谢。。。目前的方法如下: fun
func login() {
var user = "myUsername"
var pass = "myPassword"
var config = NSURLSessionConfiguration.defaultSessionConfiguration()
config.allowsCellularAccess = true
var connection = NSURLSession(configuration: config, delegate: self, delegateQueue: nil)
var request = NSMutableURLRequest(URL: NSURL(string: "https://oyster.tfl.gov.uk/oyster/security_check")!)
request.HTTPMethod = "POST"
var params = "username=\(user)&password=\(pass)"
var err: NSError?
request.HTTPBody = params.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)
request.addValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
connection.dataTaskWithRequest(request, completionHandler: {
(data : NSData!, response : NSURLResponse!, error : NSError!) in
var dataString = NSString(data: data, encoding: NSUTF8StringEncoding)
println(response)
println(dataString)
}).resume()
}
查看登录页面的HTML,可以看到以下几点:
用户名
和密码
字段名的大小写。有时web服务区分大小写
+
或&
,则此代码将不起作用。在您的测试中可能不是这样,但这是一件值得警惕的事情
在该网页上,文章需要几个额外的参数:这些参数隐藏在HTML中。我认为您需要提供所有必需的参数才能使其正常工作 清单似乎是: ReturnUrl=”https://oyster.tfl.gov.uk/oyster/security_check" AppId=“8ead5cf4-4624-4389-b90c-b1fd1937bf1f” UserName=“” Password=“” 注意用户名和密码的名称中有大写字母 试着使用全部4个,看看你进展如何。没有在这上面花太多时间,所以可能错过了一些东西
var params = "ReturnUrl=https://oyster.tfl.gov.uk/oyster/security_check&AppId=8ead5cf4-4624-4389-b90c-b1fd1937bf1f&UserName=\(user)&Password=\(pass)"
您可能会发现使用UIWebView和使用javascript填写表单并执行登录按钮更简单。登录完成后,您可以使用javascript删除任何需要的数据。这样,您就可以简单地自动化用户在其标准web页面上的交互。通过此功能,如果显示WebView,您还可以查看正在发生的事情。您还可以从处理所有重定向、脚本等的WebView中获益,这些重定向、脚本等都需要运行才能正常工作
e、 g.要设置用户名和密码并登录,您需要在WebView中使用javascript运行的所有操作如下:
username=document.getElementById("UserName");
username.value="<put in your username>";
password=document.getElementById("Password");
password.value="<put in your password>";
signinbutton=document.getElementsByName("Sign in")[0];
signinbutton.click();
username=document.getElementById(“用户名”);
username.value=“”;
密码=document.getElementById(“密码”);
密码。值=”;
signinbutton=document.getElementsByName(“登录”)[0];
signinbutton.click();
然后,这将处理WebView中登录的所有页面加载
您可以使用Safari inspector窗口尝试所有这些操作。谢谢!还不完全在那里。。。仍然在挣扎,但至少我有一些前进的方向!顺便说一句,超过10万真是太好了。PS你认为这可能与我设置的HTTP头有关吗?头基本上看起来没问题。修复
用户名
和密码
的大小写,并添加缺少的两个字段,然后查看这是否足以使其工作。通常情况下是这样的,尽管有些网站是为了阻止程序性登录尝试而编写的(例如:编写程序对web服务器进行暴力攻击太容易了)。说真的,仔细观察Charles的请求,尽可能地复制它,看看你能走多远。我做到了!!谢谢你的建议:)谢谢你的信息!希望我能破解它!