Ada*_*K33 7 excel vba windows-7
我是一名自学成才的业余程序员,我是这个论坛的新手.请多多包涵.
大约两年前,我写了一个简单的Excel vba程序来登录网站并以.csv文件的形式获取客户声明.我的程序使用GET和POST请求.这个程序完美地(根据我的需要)工作到大约三个星期前,当它不幸地打破了我.该程序无法完成初始GET请求.具体来说,它会破坏getReq.send行.
我遇到过这篇文章: 使用MSXML2.XMLHTTP而不是使用VBA的InternetExplorer.Application登录网站
在这里,我了解到你可以使用"Msxml2.XMLHTTP.6.0"而不是"Msxml2.ServerXMLHTTP.6.0".我相应地修改了我的代码,消除了在Get请求之后解析cookie的需要,并且它有效!但我不知道.即使我让它工作,我也不觉得我在这个过程中学到了很多东西.
需要注意的一些信息:
所以,我的具体问题:
任何见解将不胜感激.我附上了我的代码(登录信息X出来了).
Sub RCGInquiry()
Dim postReq, getReq, cookies
Dim p0 As Integer, p1 As Integer, temp As String
Dim result As String, respHead As String
Set getReq = CreateObject("Msxml2.ServerXMLHTTP.6.0")
'Set getReq = CreateObject("Msxml2.XMLHTTP.6.0")
' Visit homepage so we can find the cookies
getReq.Open "GET", "https://www.rcginquiry.com/sfs/Entry", False
getReq.send
respHead = getReq.getAllResponseHeaders
Debug.Print respHead
' Need to parse the cookie from Respone Headers
cookies = ""
p0 = 1
Do While InStr(p0, respHead, "Set-Cookie:") > 0
p0 = InStr(p0, respHead, "Set-Cookie:") + 11
p1 = InStr(p0, respHead, Chr(10))
temp = Trim(Mid(respHead, p0, p1 - p0))
cookies = cookies & temp & "; "
Loop
cookies = Left(cookies, Len(cookies) - 2)
' Debug.Print cookies
' Login
Set postReq = CreateObject("Msxml2.ServerXMLHTTP.6.0")
'Set postReq = CreateObject("Msxml2.XMLHTTP.6.0")
postReq.Open "POST", "https://www.rcginquiry.com/sfs/Entry", False
postReq.setRequestHeader "Cookie", cookies
postReq.setRequestHeader "Content-type", "application/x-www-form-urlencoded" 'send appropriate Headers
postReq.send "Usrid=XXXX&Psswd=XXXX" ' send login info
'-------------------------------------------------------------------------------
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Dim FSO As Object
Dim myFile As Object
Dim path As String
Dim y As Integer
curDate = Format(Date, "mm_dd_yy")
' Download CSV
postReq.Open "POST", "https://www.rcginquiry.com/sfs/Downloads/tmp.csv?filetype=POS&format=MFA20&heading=true&allaccts=true&junk=tmp.csv", False
postReq.setRequestHeader "Cookie", cookies 'must resend cookies so it knows i am logged in
postReq.setRequestHeader "Content-type", "application/x-www-form-urlencoded"
postReq.send "filetype=POS&format=MFA20&heading=true&allaccts=true&junk=temp.csv" 'url query parameters
' Writes responseText to a .csv file
Set FSO = CreateObject("Scripting.FileSystemObject")
Set myFile = FSO.createtextfile("C:\Users\Adam\Desktop\POSITION\" & curDate & ".csv", True)
myFile.write (postReq.responseText)
myFile.Close
Set FSO = Nothing
Set myFile = Nothing
End Sub
Run Code Online (Sandbox Code Playgroud)
欢迎使用 VBA 和 StackOverflow。您的笔记很详尽,因此我唯一可以建议您检查代理设置。
该链接被隐藏在这个链接中
https://support.microsoft.com/en-us/help/290761/frequently-asked-questions-about-serverxmlhttp
ComIntern向您推荐的