从 NSURLRequest 以编程方式按下 html 按钮

Posted

技术标签:

【中文标题】从 NSURLRequest 以编程方式按下 html 按钮【英文标题】:Programmatically press html button from NSURLRequest 【发布时间】:2012-10-30 09:40:26 【问题描述】:

我有一个 html 表单,它在加载时已经填充了数据。它有保存和应用按钮。

我想更改表单上的 1 项并从我的 ios 应用程序中发布它。问题是,当我为我正在更改的项目发送带有更改的表单数据信息的 POST 时,我还需要提交表单中的所有其他当前设置,否则它们会被空白覆盖。 (我无法控制页面的编辑)。 我可以事先解析页面以从表单中获取显示的数据,然后使用 POST 发送它,但是页面对于每个用户来说可能看起来不同,所以这将非常困难。

在网页浏览器中,当我在加载页面后点击“保存”按钮时,我可以看到所有 POST 标题和表单数据,所以我想我可以在我的应用程序中执行此操作以获取当前数据,然后修改 1我想更改的项目,然后重新发布。

所以我的问题是,如果我使用 AFNetworking 读取页面,我是否可以模拟按下该页面上的“保存”按钮,这样我就可以读取响应,但这次使用 POST 和标题数据?

或者关于如何实现这一点的任何替代想法?

【问题讨论】:

【参考方案1】:

这可能通过访问文档对象模型来工作...检查语法...

NSString *formValue = [webView stringByEvaluatingjavascriptFromString
                        :@"document.forms[0].elements[0].value"];

//...change value...

NSString *jScript = [NSString stringWithFormat
                     :@"document.forms[0].elements[0].value='%@';", formValue ];

[webView stringByEvaluatingJavaScriptFromString: jScript ];

[webView stringByEvaluatingJavaScriptFromString: @"document.forms[0].submit();"];

【讨论】:

我还没有尝试过,但我看到你有 webView。我没有使用 webView,我希望它在后台发生,这样我就可以读取生成的标题。 作为 AFNetworking 的创建者,让我第一个说你绝对不应该为此使用 AFNetworking。收听@kineticfocus--利用 web 视图中的 Javascript 交互(即使 web 视图实际上并未显示给用户,您仍然可以通过编程方式与之交互)

以上是关于从 NSURLRequest 以编程方式按下 html 按钮的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式从 UiView 推送新视图控制器的问题

以编程方式从嵌入导航控制器的视图中解除弹出窗口

如何以编程方式按下 QML 按钮?

以编程方式从 UITextField 接收 UILabel 值

将 HTTP 标头添加到 NSURLRequest

以编程方式从自定义 android 键盘更改键盘