PHP код:
=begin
================================================== =============================
EFE's Request Script
Version: RGSS & RGSS2 & RGSS3
Special thanks : Ryex & Gustavo Bicalho
================================================== =============================
This script will allow to request to some servers WITHOUT posting.(Only GET)
--------------------------------------------------------------------------------
Used WINAPI functions:
WinHTTPOpen
WinnHTTLConnect
WinHTTPOpenRequest
WinHTTPSendRequest
WinHTTPReceiveResponse
WinHttpQueryDataAvailable
WinHttpReadData
Call:
EFE.request(host, path, post, port)
host : "www.rpgmakervxace.net" (without http:// prefix)
path : "/forum/login.php" ( the directory path of your php file )
post : "username=kfdsfdsl&password=24324234"
port : 80 is defaul.
=end
module EFE
# I took this method from Gustavo Bicalho's WebKit script. Special thanks him.
def self.to_ws(str)
str = str.to_s();
wstr = "";
for i in 0..str.size
wstr += str[i,1]+"\0";
end
wstr += "\0";
return wstr;
end
WinHttpOpen = Win32API.new('winhttp','WinHttpOpen',"PIPPI",'I')
WinHttpConnect = Win32API.new('winhttp','WinHttpConnect',"PPII",'I')
WinHttpOpenRequest = Win32API.new('winhttp','WinHttpOpenRequest',"PPPPPII",'I')
WinHttpSendRequest = Win32API.new('winhttp','WinHttpSendRequest',"PIIIIII",'I')
WinHttpReceiveResponse = Win32API.new('winhttp','WinHttpReceiveResponse',"PP",'I')
WinHttpQueryDataAvailable = Win32API.new('winhttp', 'WinHttpQueryDataAvailable', "PI", "I")
WinHttpReadData = Win32API.new('winhttp','WinHttpReadData',"PPIP",'I')
#WinHttpWriteData = Win32API.new('winhttp','WinHttpWriteData',"PPIP",'I')
def self.request(host, path, post="",port=80)
p = path
if(post != "")
p = p + "?" + post
end
p = p.to_s
pwszUserAgent = 'WinHTTP Example/1.0'
pwszProxyName = 'WINHTTP_NO_PROXY_NAME'
pwszProxyBypass = 'WINHTTP_NO_PROXY_BYPASS'
httpOpen = WinHttpOpen.call(pwszUserAgent, 0, pwszProxyName, pwszProxyBypass, 0)
if httpOpen
httpConnect = WinHttpConnect.call(httpOpen, to_ws(host), port, 0)
if httpConnect
httpOpenR = WinHttpOpenRequest.call(httpConnect, nil, to_ws(p), "HTTP/1.1", 'WINHTTP_NO_REFERER',0,0)
if httpOpenR
httpSendR = WinHttpSendRequest.call(httpOpenR, 0, 0 , 0, 0,0,0)
if httpSendR
httpReceiveR = WinHttpReceiveResponse.call(httpOpenR, nil)
if httpReceiveR
received = 0
httpAvailable = WinHttpQueryDataAvailable.call(httpOpenR, received)
if httpAvailable
ali = ' '*1024
n = 0
httpRead = WinHttpReadData.call(httpOpenR, ali, 1024, o=[n].pack('i!'))
n=o.unpack('i!')[0]
return ali[0, n]
else
msgbox_p("Error about query data available")
end
else
msgbox_p("Error when receiving response")
end
else
msgbox_p("Error when sending request")
end
else
msgbox_p("Error when opening request")
end
else
msgbox_p("Error when connecting to the host")
end
else
msgbox_p("Error when opening connection")
end
end
end
Социальные закладки