Pour un affichage correct dans le debugueur, j'ai décoché "Unicode" dans le compilateur...
Pour tester le code, http://www.hashemian.com/tools/form-pos ... hp/test123
Format : Procedure.s PostPHP(Link$, PostData$, Useragent$="Purebasic API", port.i=80, Timeout = 1000)
Procédure modifiée suite à la remarque de GallyHC
Code : Tout sélectionner
Procedure.s PostPHP(Link$, PostData$, Useragent$="Purebasic API", port.i=80, Timeout = 1000)
; Link$ is "http://server.domain/folder/folder/file.extension"
; PostData$ is all datas to post (example "Id=5&Name=Toto&Sex=M")
BufSize.i = 4096
LenString$=Str(Len(PostData$))
RelativeLink$=Right(Link$,Len(Link$)-FindString(Link$,"/",8)+1)
PostString$ = "POST "+RelativeLink$+" HTTP/1.1"+#CRLF$
n = CountString(Link$,"/")
Server$=StringField(Link$,3,"/")
If UCase(StringField(Link$,1,"/"))="HTTP:"
com$ = PostString$ + "Host: "+Server$+#CRLF$ + "User-Agent: "+Useragent$+#CRLF$
com$ + "Accept: text/html,*/*"+#CRLF$
com$ + "Content-Type: application/x-www-form-urlencoded"+#CRLF$
com$ + "Content-Length: "+LenString$+#CRLF$+#CRLF$ ; very important, 2 x /r/n
com$ + PostData$
ConnectionID = OpenNetworkConnection(Server$, port.i,#PB_Network_TCP)
If ConnectionID
Res = SendNetworkData(ConnectionID,@com$,Len(com$))
Debug "-------"
Debug com$
Debug "-------"
Delay(30) ; let's time to receive the message
rep$ = ""
r$ = Space(4096)
d = ElapsedMilliseconds()
; Read network up to Timeout time and return the answer.
Repeat
Result = NetworkClientEvent(ConnectionID)
If result
receivLen = ReceiveNetworkData(ConnectionID,@r$,BufSize)
If receivLen < 0
ProcedureReturn rep$
EndIf
If receivLen > 0 And receivLen <= BufSize
d = ElapsedMilliseconds()
rep$ + Left(r$,receivLen)
Debug "["+Left(r$,receivLen)+"]"
EndIf
EndIf
Tm = ElapsedMilliseconds()-d
Until Tm > Timeout
CloseNetworkConnection(ConnectionID)
ProcedureReturn rep$
EndIf
EndIf
EndProcedure
result=InitNetwork()
If result
Debug PostPHP("http://posttestserver.com/post.php","Login=Golfy"+"&"+"userID=01234"+"&"+"Comment=demo")
Debug PostPHP("http://www.hashemian.com/tools/form-post-tester.php/test123","Login=Golfy"+"&"+"userID=01234"+"&"+"Comment=demo")
EndIf
End