Du kannst es mal hiermit probieren:
Code: Alles auswählen
Procedure.s RemoteXMLString(url.s, buffersize.l = 1024, timeout.l = 3000)
; by edel
; modified by kiffi
; modified by ts-soft
Protected cid.l, pos.l, headerlen.l, NetEvent.l, Buffer.l
Protected server.s, file.s, Header.s, response.s
url = LCase(url)
RemoveString(url, "http://", 1, 1)
pos = FindString(url, "/", 0)
If pos = 0
server = url
file = "/"
Else
server = Left(url, pos - 1)
file = Right(url, Len(url) - pos + 1)
EndIf
cid = OpenNetworkConnection(server, 80, #PB_Network_TCP)
If cid
Header = "GET "+ file + " HTTP/1.0" + #CRLF$
Header + "Host: " + server + #CRLF$
Header + "Accept: */*" + #CRLF$
Header + "Connection: close" + #CRLF$ + #CRLF$
SendNetworkString(cid, Header)
Buffer = AllocateMemory(buffersize)
timeout + ElapsedMilliseconds()
Repeat
NetEvent = NetworkClientEvent(cid)
If NetEvent = #PB_NetworkEvent_Data
Repeat
headerlen = ReceiveNetworkData(cid, Buffer, buffersize)
response + PeekS(Buffer, headerlen, #PB_UTF8)
Until headerlen = 0
FreeMemory(Buffer)
pos = FindString(response, #CRLF$ + #CRLF$, 0) - 1
pos = Len(#CRLF$ + #CRLF$) + pos
pos = FindString(response, "<", pos) - 1
response = Mid(response, pos, Len(response) - pos - 1)
CloseNetworkConnection(cid)
ProcedureReturn response
EndIf
If timeout < ElapsedMilliseconds()
CloseNetworkConnection(cid)
ProcedureReturn ""
EndIf
ForEver
CloseNetworkConnection(cid)
EndIf
If Buffer
FreeMemory(Buffer)
EndIf
ProcedureReturn ""
EndProcedure