Hallo Graffiti,
hier nochmal ein etwas ausgearbeitete Version des Test Codes.
Konnte hiermit auch meinen Router abfragen und auch Befehle absetzen.
Vielleicht hilft es Dir weiter.
Grüße
Alen
Edit:
- GUI mit Eingabefeldern und Knopf versehen für mehr Spaß.
- EditorGadget eingefügt damit man alle Ergebnisse besser ansehen kann
Code: Alles auswählen
EnableExplicit
#CRLF = Chr(10) + Chr(13)
Procedure.S CreateHttpHeader(get_url.S = "")
If get_url = "": ProcedureReturn "": EndIf
Protected.S HttpHeader, UserAgent, Referer
UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:11.0) Gecko/20100101 Firefox/11.0"
Referer = "http://purebasic.de"
HttpHeader = "GET " + get_url + " HTTP/1.0" + #CRLF
HttpHeader + "Referer: " + Referer + #CRLF
HttpHeader + "User-Agent: " + UserAgent + #CRLF
HttpHeader + #CRLF + #CRLF
ProcedureReturn HttpHeader
EndProcedure
Procedure.S GetHttpRequestDataFromServer(Server.S="", HttpRequestHeader.S ="",Port.l=80)
If Server = "" Or HttpRequestHeader = "": ProcedureReturn "": EndIf
Protected Received.S
Protected *Buffer, CID.l, sent_bytes.l, received_bytes.l, cEvent.l
Protected raw_received.l, file_received.l
*Buffer = AllocateMemory(8192)
CID = OpenNetworkConnection(Server, Port, #PB_Network_TCP)
If CID > 0
sent_bytes = SendNetworkString(CID, HttpRequestHeader)
If sent_bytes > 0
Repeat
cEvent = NetworkClientEvent(CID)
Select cEvent
Case #PB_NetworkEvent_Data
Repeat
received_bytes = ReceiveNetworkData(CID, *Buffer, MemorySize(*Buffer))
If received_bytes > 0
Received + PeekS(*Buffer, received_bytes)
EndIf
Until received_bytes = -1 Or received_bytes = 0
raw_received = #True
Case #PB_NetworkEvent_File
file_received = #True
EndSelect
Until raw_received = 1 Or file_received = 1
EndIf
CloseNetworkConnection(CID)
FreeMemory(*Buffer)
ProcedureReturn Received
EndIf
ProcedureReturn ""
EndProcedure
Enumeration
#window
#editor
#button
#server_text
#server_input
#url_text
#url_input
EndEnumeration
If OpenWindow(#window, 100, 100, 800, 600, "PureBasic Window", #PB_Window_ScreenCentered|#PB_Window_SystemMenu)
ButtonGadget(#button, 10,10, 80,25, "Run Now")
EditorGadget(#editor, 10,50,780, 540, #PB_Editor_ReadOnly)
TextGadget(#server_text, 100,13, 30, 20, "Server")
StringGadget(#server_input, 140,10, 130,25, "api.flickr.com")
TextGadget(#url_text, 285,13, 25, 20, "URL")
StringGadget(#url_input, 320,10, 470,25, "/services/feeds/groups_pool.gne?id=807213@N20&lang=en-us&format=json&jsoncallback=?")
EndIf
InitNetwork()
Define.S get_url, header, result, Server
Define.l Event, Quit
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_CloseWindow
Quit = 1
EndIf
If Event = #PB_Event_Gadget
Select EventGadget()
Case #button
get_url = GetGadgetText(#url_input)
header = CreateHttpHeader(get_url)
Server = GetGadgetText(#server_input)
If get_url <> "" And Server <> ""
result = GetHttpRequestDataFromServer(Server, header)
SetGadgetText(#editor, result)
Else
SetGadgetText(#editor, "Bitte Server und URL eingeben !")
EndIf
EndSelect
EndIf
Until Quit = 1