尽管有限制,我该如何实施这个应用程序?
How do I implement this app despite its limitations?
目标:
大型学校的大厅监控器可以扫描学生 ID 并在 PowerSchool 中轻松输入迟到信息。
限制:
-由于法律限制,我无法访问 PowerSchool
-无法将 ID 作为参数传递到 URL,因为数据库 ID 与学生 ID 不同。我可以得到一个列表,但是随着新学生的加入和一切,这将很难维持。
我的想法:
创建一个扫描条形码的应用程序,将学生 ID 复制到剪贴板,立即打开一个 WebView 让用户登录,然后他们可以点击并按住以将 ID 粘贴到用户查找字段中。
但是,这是非常低效的,也是最后的手段。鉴于我的极端限制,有什么方法可以改善这一点吗?
在此先致谢。
在没有实际访问您要使用的数据库的情况下,由于 ID 不同,除了您建议的条形码扫描器并将其复制到剪贴板之外,似乎没有其他方法。
您的应用应该能够模拟用户在浏览器中的操作。您可能需要捕获来自 phone 的 Web 请求和从 PowerSchool 服务器发送的响应,以准确分析登录、搜索和报告期间发生的情况。
诚然,这将是一个非常 "brittle" 的解决方案,但会受到服务器意外更改引起的问题的影响。
提取条形码非常简单。我认为您打开 webview 可能是正确的,但是根据 URL 结构,您甚至可以修改 html 正文以自动将扫描的条形码输入必要的字段.
我能想到的3个选项:
1) 您正在加载的网页是否会从 cookie 中调用之前使用的登录信息?如果它使用一个自动填充字段,请在加载 webview 之前修改保存的 cookie。
2) 如果未使用 cookie,请查看是否可以在页面加载完成后填充表单
3) 这是最雄心勃勃的。如果您知道用于表单的结构,并且不需要学生输入密码,请发送表单数据而不是打开登录页面。下面是使用 Paypal 手动填充和发送表单的示例:
NSMutableURLRequest *urlRequest = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"https://mobile.paypal.com/cgi-bin/webscr"]];
NSString *body = [NSString stringWithFormat:@"cmd=_xclick&business=paypal@example.com&image_url=https://example.com/logo.jpg&no_shipping=2&no_note=1&amount=%1.2f¤cy_code=USD¬ify_url=https://example.com/paypalipn.cfm&return=http://example.com/", [self.orderAmount floatValue]];
[urlRequest setHTTPMethod:@"POST"];
[urlRequest setHTTPBody:[body dataUsingEncoding:NSUTF8StringEncoding]];
self.webView.delegate = self;
[self.webView loadRequest:urlRequest];
当然,这意味着您必须剖析登录页面并提取表格 URL 和数据格式,但这应该有助于最终在大厅监视器上更容易。
目标:
大型学校的大厅监控器可以扫描学生 ID 并在 PowerSchool 中轻松输入迟到信息。
限制:
-由于法律限制,我无法访问 PowerSchool
-无法将 ID 作为参数传递到 URL,因为数据库 ID 与学生 ID 不同。我可以得到一个列表,但是随着新学生的加入和一切,这将很难维持。
我的想法:
创建一个扫描条形码的应用程序,将学生 ID 复制到剪贴板,立即打开一个 WebView 让用户登录,然后他们可以点击并按住以将 ID 粘贴到用户查找字段中。
但是,这是非常低效的,也是最后的手段。鉴于我的极端限制,有什么方法可以改善这一点吗?
在此先致谢。
在没有实际访问您要使用的数据库的情况下,由于 ID 不同,除了您建议的条形码扫描器并将其复制到剪贴板之外,似乎没有其他方法。
您的应用应该能够模拟用户在浏览器中的操作。您可能需要捕获来自 phone 的 Web 请求和从 PowerSchool 服务器发送的响应,以准确分析登录、搜索和报告期间发生的情况。
诚然,这将是一个非常 "brittle" 的解决方案,但会受到服务器意外更改引起的问题的影响。
提取条形码非常简单。我认为您打开 webview 可能是正确的,但是根据 URL 结构,您甚至可以修改 html 正文以自动将扫描的条形码输入必要的字段.
我能想到的3个选项:
1) 您正在加载的网页是否会从 cookie 中调用之前使用的登录信息?如果它使用一个自动填充字段,请在加载 webview 之前修改保存的 cookie。
2) 如果未使用 cookie,请查看是否可以在页面加载完成后填充表单
3) 这是最雄心勃勃的。如果您知道用于表单的结构,并且不需要学生输入密码,请发送表单数据而不是打开登录页面。下面是使用 Paypal 手动填充和发送表单的示例:
NSMutableURLRequest *urlRequest = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"https://mobile.paypal.com/cgi-bin/webscr"]];
NSString *body = [NSString stringWithFormat:@"cmd=_xclick&business=paypal@example.com&image_url=https://example.com/logo.jpg&no_shipping=2&no_note=1&amount=%1.2f¤cy_code=USD¬ify_url=https://example.com/paypalipn.cfm&return=http://example.com/", [self.orderAmount floatValue]];
[urlRequest setHTTPMethod:@"POST"];
[urlRequest setHTTPBody:[body dataUsingEncoding:NSUTF8StringEncoding]];
self.webView.delegate = self;
[self.webView loadRequest:urlRequest];
当然,这意味着您必须剖析登录页面并提取表格 URL 和数据格式,但这应该有助于最终在大厅监视器上更容易。