ça c'est normal ....
normalement tu as le résultat de ta reuqête qui s'affiche maintenant dans un requester ... et le header envoyé au serveur dans le fichier txt !
Code : Tout sélectionner
;sendHttpPost
;by Thyphoon
;but whith help from
;Pantcho => http://www.purebasic.fr/english/viewtopic.php?f=13&t=19714
;lepiaf31
;Djes
;GallyHC
;Ar-S
;And some other people who post some code on French or English forum
Structure post_variable
name.s ;Variable Name
value.s ;Variable Value
EndStructure
Structure post_file
actionName.s ; this is important!! this action must be the same as <form ... name="file">
path.s ; path+filename about file to send
mime.s ; mime-type
EndStructure
Structure proxy_structure
server.s ;
port.l ;
login.s ;
password.s ;
EndStructure
Structure post_structure
url.s ;url to send POST
proxy.proxy_structure
List variable.post_variable() ;variables
List file.post_file() ;files
EndStructure
;Init Url to send Post Data
Procedure setProxy(*posts.post_structure,server.s,port.l,login.s="",password.s="")
*posts\proxy\server=server
*posts\proxy\port=port
*posts\proxy\login=login
*posts\proxy\password=password
EndProcedure
Procedure setHttpPostUrl(*posts.post_structure,url.s)
*posts\url=url
EndProcedure
;add a variable to the Post Data List
Procedure addHttpPostVariable(*posts.post_structure,name.s,value.s)
AddElement(*posts\variable())
*posts\variable()\name=name
*posts\variable()\value=value
EndProcedure
;add a file to the Post Data List
Procedure addHttpPostfiles(*posts.post_structure,file.s,actionName.s="file")
If FileSize(file)>0
AddElement(*posts\file())
*posts\file()\path=file
*posts\file()\actionName=actionName
*posts\file()\mime="text/plain";GetMimeType(GetExtensionPart(file))
ProcedureReturn #True
EndIf
ProcedureReturn #False
EndProcedure
Macro addtoMemorie(__txt)
msize.l=MemorySize(*buffer)
;If msize=1:msize=0:EndIf
newmsize=msize+StringByteLength(__txt,#PB_Ascii)
*buffer=ReAllocateMemory(*buffer,newmsize)
Debug PeekS(*buffer,MemorySize(*buffer),#PB_Ascii)
PokeS(*buffer+msize-1,__txt,StringByteLength(__txt,#PB_Ascii),#PB_Ascii)
EndMacro
Procedure.s sendHttpDatas(*posts.post_structure)
Protected url.s,path.s,port.l,connection.i,f.i,POST.s,BOUNDARY.s
url = GetURLPart(*posts\url, #PB_URL_Site); the main domain
path =GetURLPart(*posts\url,#PB_URL_Path); the path
port= Val(GetURLPart(*posts\url, #PB_URL_Port))
If port=0:port=80:EndIf
POST=""
BOUNDARY = "-----------------------------306262331012750" ;http://www.w3.org/Protocols/rfc1341/7_2_Multipart.html
Lenght.l=0 ;
Debug "Connection opened ..."
*buffer=AllocateMemory(1)
;-Send Variable
;http://www.purebasic.fr/english/viewtopic.php?f=13&t=13759
If ListSize(*posts\variable())
addtoMemorie(#CRLF$)
addtoMemorie("--"+BOUNDARY+#CRLF$)
size.l=MemorySize(*buffer)
ForEach *posts\variable()
addtoMemorie("Content-Disposition: form-Data; name="+Chr(34)+*posts\variable()\name+Chr(34)+#CRLF$)
addtoMemorie(#CRLF$)
addtoMemorie(*posts\variable()\value+#CRLF$)
addtoMemorie("--"+BOUNDARY+#CRLF$)
Next
Lenght+MemorySize(*buffer)-size
EndIf
;-Send File
If ListSize(*posts\file())
addtoMemorie(#CRLF$)
ForEach *posts\file()
f = OpenFile(#PB_Any, *posts\file()\path)
If f
Debug "send file:"+GetFilePart(*posts\file()\path)
fileHeader.s="Content-Disposition: form-data; name="+Chr(34)+*posts\file()\actionName+Chr(34) +"; filename="+Chr(34)+*posts\file()\path+Chr(34)+#CRLF$
fileHeader+"Content-Type: application/octet-stream" + #CRLF$ + #CRLF$
Lenght+(Lof(f)+2*Len(BOUNDARY)+Len(fileHeader)+10)
addtoMemorie(#CRLF$)
addtoMemorie("--"+BOUNDARY+#CRLF$+fileHeader)
;addfile content
size.l=MemorySize(*buffer)
If size=1:size=0:EndIf
*buffer=ReAllocateMemory(*buffer,size+Lof(f))
ReadData(f, *buffer+size, Lof(f))
addtoMemorie(#CRLF$ + "--" + BOUNDARY + "--")
CloseFile(f)
Else
MessageRequester("Error","File No Found :"+#CRLF$+*posts\file()\path,#PB_MessageRequester_Ok)
EndIf
Next
EndIf
Debug PeekS(*buffer,MemorySize(*buffer),#PB_Ascii)
;-TEST SI PROXY
;http://www.purebasic.fr/english/viewtopic.php?f=12&t=10327
If *posts\proxy\server<>""
connection = OpenNetworkConnection(*posts\proxy\server, *posts\proxy\port)
POST + "POST "+*posts\url+" HTTP/1.0"+ #CRLF$
If *posts\proxy\login<>""
conc$=*posts\proxy\login+":"+*posts\proxy\password
*OutputBuffer = AllocateMemory(Len(conc$)*4)
Base64Encoder(@conc$,Len(conc$),*OutputBuffer,Len(conc$)*4)
enc$=PeekS(*OutputBuffer)
FreeMemory(*OutputBuffer)
POST +"Proxy-Authorization: Basic "+enc$+#CRLF$
EndIf
Else
connection = OpenNetworkConnection(url, port)
POST + "POST "+"/"+path+" HTTP/1.0"+ #CRLF$
EndIf
POST + "Host: "+url + #CRLF$
POST + "Content-Type: multipart/form-data; boundary="+BOUNDARY + #CRLF$
;POST + "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7" + #CRLF$
;si il y a un acces proteger avec htaccess
;POST + "Authorization: Basic "+ OutputBuffer + #CRLF$
POST + "Content-Length: "+Str(Lenght) + #CRLF$
POST + "Connection: keep-alive" + #CRLF$
If connection
*postbuffer=AllocateMemory(StringByteLength(POST,#PB_Ascii))
PokeS(*postbuffer,POST,StringByteLength(POST,#PB_Ascii),#PB_Ascii)
SendNetworkData(connection, *postbuffer, MemorySize(*postbuffer)):
SendNetworkData(connection, *buffer, MemorySize(*buffer)):
string.s = Space(2048)
result.s=""
time = ElapsedMilliseconds()
Repeat
If NetworkClientEvent(Connection) = #PB_NetworkEvent_Data
readed = ReceiveNetworkData(connection, @string, 2048)
result + PeekS(@string,readed,#PB_Ascii);Left(string, readed)
time = ElapsedMilliseconds()
EndIf
Delay(100)
Until ElapsedMilliseconds() - time >= 3000
;clear the header
result=Right(result,Len(result)-FindString(result, #CRLF$+ #CRLF$,0)-3)
CreateFile(0,"Debug.txt")
WriteString(0,POST)
WriteData(0,*buffer, MemorySize(*buffer))
CloseFile(0)
RunProgram("Debug.txt")
FreeMemory(*buffer)
ProcedureReturn result
Else
Debug "NO CONNECTION"
EndIf
EndProcedure
InitNetwork()
test.post_structure
setHttpPostUrl(@test,"http://www.thyphoon.com/test.php")
;setProxy(@test,"test.bopi.fr",80)
addHttpPostVariable(@test,"variable","unevaleur")
addHttpPostVariable(@test,"test","reponse")
addHttpPostfiles(@test,OpenFileRequester("Please choose file to load", "", "*.*", 0),"fileA")
addHttpPostfiles(@test,OpenFileRequester("Please choose file to load", "", "*.*", 0),"fileB")
MessageRequester("Result",sendHttpDatas(@test),#PB_MessageRequester_Ok )