|
本帖最后由 xmyjk 于 2012-2-12 13:12 编辑
闪存不足 发表于 2012-2-11 14:13
谢谢狼版和下弦月,我刚刚开始学习这方面的东西,原来网页查询还可以这样写,不过你们两位的代码到了Spli ...
应该可以了,你自行继续完善,把你要查询的单号用变量替换就可以当工具用。
说明下:网页有3个防护机制,第一个是转向时,URL里面有个SSOTOKEN的防盗。
第二个是最后一个取数的COOIKE防盗。
第三个是框架的判断,如果没有执行倒数第二步的框架内存加载,就不能取得数据。
[code=vb]
Option Explicit
Sub Test1()
Dim xmlhttp As Object, Cookie As String, stok As String, s As String
Set xmlhttp = CreateObject("WinHttp.WinHttpRequest.5.1")
With xmlhttp
.Open "GET", "http://iport.sctcn.com/portal/page/portal/PG_IPort/P_OI?p_parametertype=ContainerInfo&p_parametervalue=OOLU7530910", False
.send
stok = Replace(Replace(Replace(Split(Split(.RESPONSETEXT, "SSOToken"" value=""")(1), """>")(0), "~", "%7E"), "=", "%3D"), "+", "%2B")
.Open "GET", "http://iport.sctcn.com/oi/?p_action=oi&p_langcode=zhs&SSOToken=" & stok & "&ParameterType=ContainerInfo&ParameterValue=OOLU7530910&debug=", False
.send
Cookie = Split(.getResponseHeader("Set-Cookie"), ";")(0)
.Open "GET", "http://iport.sctcn.com/oi/action?SSOToken=" & stok & "&ParameterType=ContainerInfo&ParameterValue=OOLU7530910&LocaleCode=zhs&moduleName=oi&logout=&loginUrl=", False
.send
.Open "GET", "http://iport.sctcn.com/oi/action/Inquery/oiQuery?parameterType=ContainerInfo¶meterValue=OOLU7530910&appModuleName=OI&appFunctionName=ContainerInfo", False
.setRequestHeader "Cookie", Cookie
.send
s = Split(Split(Split(.RESPONSETEXT, "实际到泊信息")(1), "实际离泊信息")(0), "</td></tr><tr><td>")(0)
MsgBox Split(s, ">")(UBound(Split(s, ">")))
End With
Set xmlhttp = Nothing
End Sub
[/code]
|
|