HTTP-Requester
Verfasst: 28.03.2005 02:55
Für den HTTP-Request zwischendurch 
Kann man natürlich noch verbessern.

Kann man natürlich noch verbessern.
Code: Alles auswählen
Enumeration ;Windows
#W_Main
EndEnumeration
Enumeration ;Gadgets
#G_SourceCode
#G_IEView
#G_B_Request
#G_I_URI
#G_I_Port
#G_I_Method
#G_I_File
#G_I_Protocol
#G_I_Content
;Headerfields->
#G_I_Accept
#G_I_Accept_Charset
#G_I_Accept_Encoding
#G_I_Accept_Language
#G_I_Accept_Ranges
#G_I_Age
#G_I_Allow
#G_I_Autorization
#G_I_Chache_Control
#G_I_Connection
#G_I_Content_Encoding
#G_I_Content_Language
#G_I_Content_Length
#G_I_Content_Location
#G_I_Content_MD5
#G_I_Content_Range
#G_I_Content_Type
#G_I_Date
#G_I_ETag
#G_I_Expect
#G_I_Expires
#G_I_From
#G_I_Host
#G_I_If_Match
#G_I_If_Modified_Since
#G_I_If_None_Match
#G_I_If_Range
#G_I_If_Unmodified_Since
#G_I_Last_Modified
#G_I_Location
#G_I_Max_Forwards
#G_I_Progma
#G_I_Proxy_Authenticate
#G_I_Proxy_Authorization
#G_I_Range
#G_I_Referer
#G_I_Retry_After
#G_I_Server
#G_I_TE
#G_I_Trailer
#G_I_Transfer_Encoding
#G_I_Upgrade
#G_I_User_Agent
#G_I_Vary
#G_I_Via
#G_I_Warning
#G_I_WWW_Authenticate
;<-Headerfields
#G_T_Host
#G_T_User_Agent
#G_T_Referer
#G_CB_Host
#G_T_Content_Encoding
#G_T_Content_Language
#G_T_Content_Length
#G_T_Content_Location
#G_T_Content_MD5
#G_T_Content_Range
#G_T_Content_Type
#G_CB_Content_Length
#G_CB_Content_MD5
EndEnumeration
#Known_Methods = 18
Dim Known_Method.s(#Known_Methods)
Known_Method(0) = "OPTIONS"
Known_Method(1) = "GET"
Known_Method(2) = "HEAD"
Known_Method(3) = "POST"
Known_Method(4) = "TRACE"
Known_Method(5) = "PUT"
Known_Method(6) = "DELETE"
Known_Method(7) = "CONNECT"
Known_Method(8) = "PATCH"
Known_Method(9) = "LINK"
Known_Method(10) = "UNLINK"
Known_Method(11) = "COPY"
Known_Method(12) = "MOVE"
Known_Method(13) = "MKCOL"
Known_Method(14) = "PROPFIND"
Known_Method(15) = "PROPPATCH"
Known_Method(16) = "LOCK"
Known_Method(17) = "UNLOCK"
Known_Method(18) = "SEARCH"
#Known_Protocols = 1
Dim Known_Protocol.s(#Known_Protocols)
Known_Protocol(0) = "HTTP/1.0"
Known_Protocol(1) = "HTTP/1.1"
#Known_User_Agents = 25
Dim Known_User_Agent.s(#Known_User_Agents)
Known_User_Agent(0) = "Opera/7.54 (Windows NT 5.1; U) [de]"
Known_User_Agent(1) = "Mozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.7.6) Gec"
Known_User_Agent(2) = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6) Gec"
Known_User_Agent(3) = "Mozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.7.5) Gec"
Known_User_Agent(4) = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gec"
Known_User_Agent(5) = "Mozilla/5.0 (Windows; U; Windows NT 5.1; de-AT; rv:1.7.5) Gec"
Known_User_Agent(6) = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7) Gecko"
Known_User_Agent(7) = "Mozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.4) Gecko"
Known_User_Agent(8) = "Mozilla/5.0 (Windows; U; Windows NT 5.0; de-DE; rv:1.7.5) Gec"
Known_User_Agent(9) = "Mozilla/5.0 (X11; U; Linux i686; de-AT; rv:1.7.5) Gecko/20050"
Known_User_Agent(10) = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"
Known_User_Agent(11) = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET"
Known_User_Agent(12) = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
Known_User_Agent(13) = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1"
Known_User_Agent(14) = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.54"
Known_User_Agent(15) = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.23"
Known_User_Agent(16) = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; ."
Known_User_Agent(17) = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Crazy"
Known_User_Agent(18) = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Salzb"
Known_User_Agent(19) = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
Known_User_Agent(20) = "Mozilla/4.0 (compatible; MSIE 6.0; X11; Linux i686) Opera 7.5"
Known_User_Agent(21) = "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; DT)"
Known_User_Agent(22) = "Mozilla/4.0 (compatible; MSIE 5.5; Windows 98; Win 9x 4.90; A"
Known_User_Agent(23) = "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"
Known_User_Agent(24) = "Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt)"
Known_User_Agent(25) = "msnbot/1.0 (+http://search.msn.com/msnbot.htm)"
#Known_Content_Types = 2
Dim Known_Content_Type.s(#Known_Content_Types)
Known_Content_Type(0) = "text/html; charset=ISO-8859-1"
Known_Content_Type(1) = "message/http"
Known_Content_Type(2) = "application/x-www-form-urlencoded"
InitNetwork()
CreateGadgetList(OpenWindow(#W_Main,0,0,800,600,#PB_Window_ScreenCentered|#PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_Invisible,"HTTP-Requester"))
AddKeyboardShortcut(#W_Main,#PB_Shortcut_Return,13)
StringGadget(#G_SourceCode,0,0,800,500,"",#PB_String_MultiLine|#WS_VSCROLL)
;WebGadget(#G_IEView,400,0,400,500,"")
StringGadget(#G_I_URI,0,500,100,20,"www.deeem2031.de."):StringGadget(#G_I_Port,100,500,20,20,"80",#PB_String_Numeric)
ComboBoxGadget(#G_I_Method,120,500,80,#Known_Methods*20+40,#PB_ComboBox_Editable):For i = 0 To #Known_Methods: AddGadgetItem(#G_I_Method,-1,Known_Method(i)):Next:SetGadgetState(#G_I_Method,1)
ComboBoxGadget(#G_I_Protocol,650,500,100,#Known_Protocols*20+40,#PB_ComboBox_Editable):For i = 0 To #Known_Protocols: AddGadgetItem(#G_I_Protocol,-1,Known_Protocol(i)):Next:SetGadgetState(#G_I_Protocol,0)
StringGadget(#G_I_File,200,500,450,20,"/")
TextGadget(#G_T_Host,2,522,28,20,"Host:"):CheckBoxGadget(#G_CB_Host,30,520,15,20,""):SetGadgetState(#G_CB_Host,1):StringGadget(#G_I_Host,45,520,155,20,"www.deeem2031.de.")
TextGadget(#G_T_User_Agent,202,522,70,20,"User-Agent:"):ComboBoxGadget(#G_I_User_Agent,270,520,330,#Known_User_Agents*20+40,#PB_ComboBox_Editable):For i = 0 To #Known_User_Agents: AddGadgetItem(#G_I_User_Agent,-1,Known_User_Agent(i)):Next:SetGadgetState(#G_I_User_Agent,0)
TextGadget(#G_T_Referer,602,522,50,20,"Referer:"):StringGadget(#G_I_Referer,650,520,150,20,"")
TextGadget(#G_T_Content_Encoding,2,540,100,20,"Content-Encoding"):TextGadget(#G_T_Content_Language,100,540,100,20,"-Language"):TextGadget(#G_T_Content_Length,200,540,40,20,"-Length"):TextGadget(#G_T_Content_Location,260,540,100,20,"-Location"):TextGadget(#G_T_Content_MD5,360,540,120,20,"-MD5"):TextGadget(#G_T_Content_Range,500,540,100,20,"-Range"):TextGadget(#G_T_Content_Type,600,540,100,20,"-Type")
CheckBoxGadget(#G_CB_Content_Length,245,540,15,20,""):SetGadgetState(#G_CB_Content_Length,1):CheckBoxGadget(#G_CB_Content_MD5,485,540,15,20,""):SetGadgetState(#G_CB_Content_MD5,1)
StringGadget(#G_I_Content_Encoding,0,560,100,20,""): StringGadget(#G_I_Content_Language,100,560,100,20,""): StringGadget(#G_I_Content_Length,200,560,60,20,""): StringGadget(#G_I_Content_Location,260,560,100,20,""): StringGadget(#G_I_Content_MD5,360,560,140,20,""): StringGadget(#G_I_Content_Range,500,560,100,20,"")
ComboBoxGadget(#G_I_Content_Type,600,560,200,#Known_Content_Types*20+40,#PB_ComboBox_Editable):For i = 0 To #Known_Content_Types: AddGadgetItem(#G_I_Content_Type,-1,Known_Content_Type(i)):Next:SetGadgetState(#G_I_Content_Type,0)
StringGadget(#G_I_Content,0,580,800,20,"")
ButtonGadget(#G_B_Request,750,500,50,20,"Request")
HideWindow(#W_Main,0)
Repeat
Select WindowEvent()
Case #PB_Event_Menu
Focus = GetFocus_()
SendMessage_(GadgetID(#G_B_Request),#WM_LBUTTONDOWN,#MK_LBUTTON,0)
SendMessage_(GadgetID(#G_B_Request),#WM_LBUTTONUP,#MK_LBUTTON,0)
If Focus:SetFocus_(Focus):EndIf
Case #PB_Event_Gadget
Select EventGadgetID()
Case #G_I_Method
If UCase(GetGadgetText(#G_I_Method)) = "POST"
SetGadgetText(#G_I_Content_Type,"application/x-www-form-urlencoded")
EndIf
Case #G_I_URI
If GetGadgetState(#G_CB_Host)
SetGadgetText(#G_I_Host,GetGadgetText(#G_I_URI))
EndIf
Case #G_I_Content
Content.s = GetGadgetText(#G_I_Content)
ContentLength = Len(Content)
If GetGadgetState(#G_CB_Content_Length)
SetGadgetText(#G_I_Content_Length,Str(ContentLength))
EndIf
If GetGadgetState(#G_CB_Content_MD5)
SetGadgetText(#G_I_Content_MD5,MD5Fingerprint(Content,ContentLength))
EndIf
Case #G_B_Request
Header.s = GetGadgetText(#G_I_Method)+" "+GetGadgetText(#G_I_File)+" "+GetGadgetText(#G_I_Protocol)+#CRLF$
If GetGadgetText(#G_I_Host): Header + "Host: "+GetGadgetText(#G_I_Host)+#CRLF$ :EndIf
If GetGadgetText(#G_I_User_Agent): Header + "User-Agent: "+GetGadgetText(#G_I_User_Agent)+#CRLF$ :EndIf
If GetGadgetText(#G_I_Referer): Header + "Referer: "+GetGadgetText(#G_I_Referer)+#CRLF$ :EndIf
If GetGadgetText(#G_I_Content)
If GetGadgetText(#G_I_Content_Encoding): Header + "Content-Encoding: "+GetGadgetText(#G_I_Content_Encoding)+#CRLF$ :EndIf
If GetGadgetText(#G_I_Content_Language): Header + "Content-Language: "+GetGadgetText(#G_I_Content_Language)+#CRLF$ :EndIf
If GetGadgetText(#G_I_Content_Length): Header + "Content-Length: "+GetGadgetText(#G_I_Content_Length)+#CRLF$ :EndIf
If GetGadgetText(#G_I_Content_Location): Header + "Content-Location: "+GetGadgetText(#G_I_Content_Location)+#CRLF$ :EndIf
If GetGadgetText(#G_I_Content_MD5): Header + "Content-MD5: "+GetGadgetText(#G_I_Content_MD5)+#CRLF$ :EndIf
If GetGadgetText(#G_I_Content_Range): Header + "Content-Range: "+GetGadgetText(#G_I_Content_Range)+#CRLF$ :EndIf
If GetGadgetText(#G_I_Content_Type): Header + "Content-Type: "+GetGadgetText(#G_I_Content_Type)+#CRLF$ :EndIf
EndIf
Header + #CRLF$+GetGadgetText(#G_I_Content)+#CRLF$
If CID: CloseNetworkConnection(CID):EndIf
CID = OpenNetworkConnection(GetGadgetText(#G_I_URI),Val(GetGadgetText(#G_I_Port)))
If CID
SendNetworkString(CID,Header)
SetGadgetText(#G_SourceCode,"")
EndIf
EndSelect
Case #PB_Event_CloseWindow
quit = 1
Case 0
Delay(10)
EndSelect
If CID
If NetworkClientEvent(CID)
SourceCode.s=Space(1024)
SourceCodelen = ReceiveNetworkData(CID,@SourceCode,1024)
SetGadgetText(#G_SourceCode,GetGadgetText(#G_SourceCode)+RTrim(SourceCode))
EndIf
EndIf
Until quit