【发布时间】:2019-08-26 21:04:30
【问题描述】:
我正在尝试从 VBA 中的 IE 自动化更改为 httprequest,但在尝试使用诸如 function() 之类的 onclick 操作提交表单数据时遇到了一些问题。问题是当 onclick() 表单数据被提交到同一域下的另一个 URL 时。
例如。我在看网页 www.test.com/asp.net?186848 当我在 chrome 调试器上跟踪时,post 方法实际上是将数据提交到 www.test.com/component/mxAjaxFunctions.cfc?method=init&ajaxcallid=5498_15544XXXXXXX
总结
1.网站上使用按钮提交的表单是onclick function()
2.form提交到不同的URL,通过form提交的ID是原URL中的ID。
3.部分新网址包含随机生成的ID+日期
最初我在vba中使用了以下httprequest来获取数据,但它不起作用,响应返回相同的内容。
然后我去谷歌浏览器并使用网络记录器,以下是实际发生的事件。
- 表单数据被提交到与我正在查看的不同的 URL。 www.test.com/component/mxAjaxFunctions.cfc?method=init&ajaxcallid=5498_15544XXXXXXX 后来我通过从 chrome 读取 .JS 文件发现 ajaxcallid 之后的 5498 是一个随机数,而 15544XXX 实际上是来自 js 的 date.now()
2.chrome提交的表单数据记录如下:
方法:初始化
函数:一些函数
id:123456
statuscontent:我在文本框中输入的实际内容
我尝试用不同的 URL 修改 post 请求,但不起作用,我尝试从 chrome 复制并粘贴表单数据,它不起作用,我还尝试将 post 方法更改为 init这也不起作用。
objHTTP.Open "POST", originalURL, False
objHTTP.setRequestHeader "Content-type", "application/x-www-form-
urlencoded"
objHTTP.send("form data")
试过
objHTTP.Open "POST", newURL, False
objHTTP.setRequestHeader "Content-type", "application/x-www-form-
urlencoded"
objHTTP.send("form data")
没用
试过
objHTTP.Open "INIT", newURL, False
objHTTP.setRequestHeader "Content-type", "application/x-www-form-
urlencoded"
objHTTP.send("form data")
没用
试过
objHTTP.Open "INIT", newURL, False
objHTTP.setRequestHeader "Content-type", "application/x-www-form-
urlencoded"
objHTTP.send("form data copy from chrome")
没用
试过
objHTTP.Open "INIT", originalURL, False
objHTTP.setRequestHeader "Content-type", "application/x-www-form-
urlencoded"
objHTTP.send("form data copy from chrome")
没用
【问题讨论】:
-
没用是什么意思?您是否在所有情况下都收到相同的错误消息或意外响应?
-
没有工作意味着我得到了相同的响应文本。
-
我已经弄明白了。因此,以下是我为使该 httprequest 帖子正常工作所做的工作。所以我想什么不起作用是我在第一次尝试时直接复制了 url,而不是使用复制的 url,我生成了一个随机数 + 自 unix 日期以来经过的毫秒数,就像 js 在网页上所做的那样。我能够发布与我从谷歌浏览器复制的字符串相同的数据。
标签: javascript ajax vba xmlhttprequest