我在excel 2010中通过vba使用xmlhttp
。我需要以编程方式将项目添加到网站上的购物车中。到目前为止,我有以下代码,它使用POST
方法
我认为我的代码有些错误,但不确定如何修复 - 它没有显示提交表单的位置。这是网址:
http://www.craft-e-corner.com/p-2688-new-testament-cricut-cartridge.aspx
我输入的url作为处理表单的url是“form”的“action =”部分中的url。
如何验证表格已发布?
Sub post_frm()
Dim xmlhttp As Object
Set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP")
' Indicate that page that will receive the request and the
' type of request being submitted
xmlhttp.Open "POST", "http://www.craft-e-corner.com/addtocart.aspx?returnurl=showproduct.aspx%3fProductID%3d2688%26SEName%3dnew-testament-cricut-cartridge", False
' Indicate that the body of the request contains form data
xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
' Send the data as name/value pairs
xmlhttp.send "Quantity=1&VariantID=2705&ProductID=2688"
Set xmlhttp = Nothing
End Sub
答案 0 :(得分:9)
代码没有问题。 :)我测试了它,它工作正常。错误可能在其他地方。
我只是稍微调整了代码以使用IE来测试输出,它现在工作得很好:)我现在已经在Excel 2007中测试了它。不久将在2010年进行测试。 BTW您使用的是哪个版本的IE?
这是我测试的代码,它运行得很好。
Option Explicit
Sub post_frm()
Dim objIE As Object, xmlhttp As Object
Dim response As String
Set objIE = CreateObject("InternetExplorer.Application")
objIE.navigate "about:blank"
objIE.Visible = True
Set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP")
'~~> Indicates that page that will receive the request and the type of request being submitted
xmlhttp.Open "POST", "http://www.craft-e-corner.com/addtocart.aspx?returnurl=showproduct.aspx%3fProductID%3d2688%26SEName%3dnew-testament-cricut-cartridge", False
'~~> Indicate that the body of the request contains form data
xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
'~~> Send the data as name/value pairs
xmlhttp.Send "Quantity=1&VariantID=2705&ProductID=2688"
response = xmlhttp.responseText
objIE.document.Write response
Set xmlhttp = Nothing
End Sub
此致
西特
答案 1 :(得分:1)
其他answer的一种变体对我有效,不需要IE。
Sub Post_HTTP_Form()
'Requires reference to "Microsoft XML, v6.0" or better. (Tools>References)
Dim msXML As New XMLHTTP60, resp As String
With msXML
.Open "POST", "{http://YOUR_URL_HERE.com}", False
.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
.Send "{PARAMETER}={VALUE}"
resp = StrConv(.responseBody, vbUnicode)
End With
Debug.Print resp 'outputs to Immediate Window (CTRL+G to view)
Set msXML = Nothing
End Sub
只需替换{花括号}中的三个值即可。
...和late-bound版本:
Sub Post_HTTP_Form()
Dim msXML As Object, resp As String
Set msXML = CreateObject("MSXML2.ServerXMLHTTP")
With msXML
.Open "POST", "{http://YOUR_URL_HERE.com}", False
.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
.Send "{PARAMETER}={VALUE}"
resp = StrConv(.responseBody, vbUnicode)
End With
Debug.Print resp 'outputs to Immediate Window (CTRL+G to view)
Set msXML = Nothing
End Sub