【问题标题】:How do I implement this app despite its limitations?尽管有限制,我如何实现这个应用程序?
【发布时间】:2015-07-03 07:49:25
【问题描述】:

目标:

大型学校的大厅监视器可以扫描学生证,并在 PowerSchool 中轻松输入迟到信息。

限制:

-由于法律限制,我无法访问 PowerSchool

- 无法将 ID 作为参数传递到 URL,因为数据库 ID 与学生 ID 不同。我可以得到一份清单,但随着新学生和一切的获得,这将很难维持。

我的想法:

创建一个扫描条形码的应用,将学生 ID 复制到剪贴板,立即打开一个 WebView 让用户登录,然后他们可以点击并按住将 ID 粘贴到用户查找字段中。

但是,这是非常低效的,也是最后的手段。鉴于我的极端限制,有什么办法可以改善这一点?

非常感谢。

【问题讨论】:

    标签: ios iphone swift ipad powerschool


    【解决方案1】:

    拉入条形码相当简单。我认为您打开 web 视图可能走在正确的轨道上,但是根据 URL 结构,您甚至可以修改 html 正文以自动将扫描的条形码输入到必要的字段中。

    我能想到的三个选项:

    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&currency_code=USD&notify_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 与“数据库”ID 不同,并且另一个限制是:我无权访问数据库 ID :(
    • 但是您的想法是使用条形码复制/粘贴到网页上的文本表单中(我假设条形码包含学生证)。这正是它将实现的目标。您所做的只是拉入条形码,然后执行与网页相同的 POST 调用。
    • 哦,现在我明白了!谢谢!有什么方法可以捕获发布数据以跟踪数据的发送方式?
    • 这只是一个基本的网页,不是吗?剖析 HTML 代码并确定正文中发送的内容应该相当容易。我想你可以使用 Safari 网络检查器来查看数据,但我不是一个足够强大的网络程序员来确定。
    【解决方案2】:

    如果您实际上无法访问您要使用的数据库,并且由于 ID 不同,除了您建议使用条形码扫描仪并将其复制到剪贴板之外,似乎没有其他方法。

    【讨论】:

      【解决方案3】:

      您的应用应该能够模拟用户在浏览器中的操作。您可能需要从手机捕获 Web 请求以及从 PowerSchool 服务器发送的响应,以准确分析登录、搜索和报告期间发生的情况。

      诚然,这将是一个非常“脆弱”的解决方案,容易受到服务器意外更改引起的问题的影响。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-12-03
        • 2021-06-28
        • 2020-05-13
        • 2010-11-15
        • 2013-12-13
        • 2011-10-06
        相关资源
        最近更新 更多