我试图从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.form是onclick函数()
2.form被提交到另一个URL,通过表单提交的ID是原始URL中包含的ID。
3。新网址的一部分包含随机生成的ID +日期
最初,我在vba中使用以下httprequest来获取数据,但是它不起作用,响应返回相同的内容。
然后我去google chrome并使用网络记录器,以下是实际发生的事件。
2。chrome记录的提交表单数据如下:
方法:初始化
功能:某些功能
id:123456
statuscontent:我在文本框中输入的实际内容
我尝试使用其他无效的URL修改发布请求,并尝试从chrome复制和粘贴表单数据,但它不起作用,我还尝试将发布方法更改为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")
没有工作
答案 0 :(得分:0)
我已经知道了。因此,以下是我为使该httprequest帖子正常工作所做的工作。
我猜第一次是行不通的,是我直接复制了url,而不是使用复制的url,我生成了一个自unix日期起经过的随机数+毫秒,就像js在网页上所做的一样。我能够发布与从Google chrome复制的字符串相同的数据。
getunixtime = DateDiff("s", "01/01/1970 00:00:00", Now()) & Right(Timer *
100, 3)
URL = www.test.com/component/mxAjaxFunctions.cfc?
method=init&ajaxcallid="& cint(rnd*10001) & "_"& getunixtime
objHTTP.Open "POST", URL, False
objHTTP.setRequestHeader "Content-type", "application/x-www-form-
urlencoded"
objHTTP.send("form data copy from chrome")