本文来自于Thinkai’s Blog,thinkai也是我在ahk上面的引路人,对thinkai感兴趣的朋友请关注他的博客。
thinkai的博客简洁、有趣,即便是转载过来我也尽量保持作者原有的风格,主要是方便大家查阅。
xml =
(
<?xml version="1.0" encoding="UTF-8" standalone="no"?><SOAP-ENV:Envelope xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><commonUtil xmlns="http://wtp"><value xmlns:SOAPSDK4="http://wtp">data</value></commonUtil></SOAP-ENV:Body>
)
;请求头根据实际需求修改,注意Content-Type。
result := URLDownloadToVar("http://yourwebsite.com", "UTF-8","POST",xml,{"SOAPAction":"""urn:commonUtil""","Content-Type":"text/xml; charset=""UTF-8""","User-Agent":"SOAP Toolkit 3.0","Host":"0.0.0.0","Content-Length":strlen(xml),"Connection":"Keep-Alive","Cache-Control":"no-cache","Pragma":"no-cache"})
MsgBox % result
URLDownloadToVar(url, Encoding = "",Method="GET",postData="",headers:=""){ ;网址,编码,请求方式,post数据,请求头
hObject:=ComObjCreate("WinHttp.WinHttpRequest.5.1")
if Method = GET
{
Try
{
;hObject.SetTimeouts(500,2000,2000,5000)
hObject.Open("GET",url)
hObject.Send()
}
catch e
return -1
}
else if Method = POST
{
Try
{
hObject.SetTimeouts(30000,30000,300000,300000)
hObject.Open("POST",url,True)
if IsObject(headers)
{
for k,v in headers
hObject.SetRequestHeader(k, v)
}
hObject.Send(postData)
hObject.WaitForResponse(-1)
}
catch e
{
FileAppend, % "`n" var_dump(e), error.txt
return -1
}
}
if (Encoding && hObject.ResponseBody)
{
oADO := ComObjCreate("adodb.stream")
oADO.Type := 1
oADO.Mode := 3
oADO.Open()
oADO.Write(hObject.ResponseBody)
oADO.Position := 0
oADO.Type := 2
oADO.Charset := Encoding
return oADO.ReadText(), oADO.Close()
}
return hObject.ResponseText
}
?