Sous la forme d'un include, HTTPRequest() est une fonction qui permet d’exécuter un script Php sur un serveur local ou distant et de recevoir ou envoyer des données.
Pour utiliser cet include vous devez avoir des connaissances en Php et avoir un serveur local ou un serveur distant.
Vous allez pouvoir consulter trois tutoriels pour :
- Recevoir un tableau envoyé par un script Php.
- Recevoir un tableau associatif envoyé par un script Php.
- Envoyer des variables à un script Php.
- Recevoir le contenu d'une requête SQL envoyé par un script Php (En préparation actuellement)
■ Installation
Commencez créer un dossier dans lequel vous allez enregistrer HTTPRequest.pbi
Code : Tout sélectionner
;HTTPRequest() Version 1.10
;Contributor Falsam & CO
;Create 08 September 2014
;Update 29 September 2017
Procedure.s HTTPRequest(HostName.s, HostFolder.s, HostPort, PhpScript.s, Method.s="GET", DataSend.s="", *CallBackError=0, Mode=#PB_Network_TCP)
Protected HostConnection.i=0
Protected HostUrl.s
Protected dwBytes, *Buffer, Buffer.s
If InitNetwork()
HostConnection = OpenNetworkConnection(HostName, HostPort, Mode)
If HostConnection
HostUrl = Method+" "
HostUrl + HostFolder + PhpScript
If DataSend<>""
HostUrl+"?"+DataSend
EndIf
HostUrl + " HTTP/1.0" + #CRLF$ + "Host: " + HostName + #CRLF$ + #CRLF$ + "Connection: Close"
If SendNetworkString(HostConnection, HostUrl, #PB_UTF8)
Delay(200)
*buffer = AllocateMemory(65535)
dwBytes = 1
While dwBytes > 0
dwBytes = ReceiveNetworkData(HostConnection, *buffer, 65535)
Wend
Else
If *CallBackError <> 0
CallFunctionFast(*CallBackError, 3) ;Error SendNetworkString()
Else
ProcedureReturn "Error"
EndIf
EndIf
CloseNetworkConnection(HostConnection)
Buffer = PeekS(*Buffer, -1, #PB_UTF8 | #PB_ByteLength)
Debug Buffer
FreeMemory(*Buffer)
ProcedureReturn StringField(Buffer, CountString(Buffer, #CRLF$) + 1, #CRLF$)
Else
If *CallBackError <> 0
CallFunctionFast(*CallBackError, 2) ;Server connection error
Else
ProcedureReturn "Error"
EndIf
EndIf
Else
If *CallBackError <> 0
CallFunctionFast(*CallBackError, 1) ;InitNetwork() Error
Else
ProcedureReturn "Error"
EndIf
EndIf
EndProcedure
On va commencer par faire simple. Sur mon serveur distant se trouve un script Php (test0.php) qui va renvoyer un tableau.
Code : Tout sélectionner
<?php
$array = array("foo", "bar", "hello", "world");
echo json_encode($array);
?>
Le code Pure Basic pour recevoir les données (test0.pb)
Code : Tout sélectionner
;Receive Php Arrays
IncludeFile "HTTPRequest.pbi"
Enumeration
#Json
EndEnumeration
Global Buffer.s, i
Global Dim Result.s(0)
Buffer = HTTPRequest("s242132022.onlinehome.fr", "/racal/", 80, "test0.php")
Debug "Control Php Array : " + Buffer
If ParseJSON(#Json, Buffer)
;Transfer the php array to an array
ExtractJSONArray(JSONValue(#Json), Result())
;Display the result
For i=0 To ArraySize(Result())
Debug Result(i)
Next
EndIf
Examinons les différents paramètres de la fonction HTTPRequest()
-Paramètre 1 : Nom du serveur distant.
-Paramètre 2 : Nom du dossier distant qui contient le script php
-Paramètre 3 : Port du serveur distant. En général il prend la valeur 80
-Paramètre 4 : Le script à lancer.
* N'oubliez pas de décocher l'option unicode des paramètres de compilation.
Résultat
■ A lire aussiControl Php Array : ["foo","bar","hello","world"]
foo
bar
hello
world
Tutoriel : Recevoir un tableau associatif envoyé par un script Php
Tutoriel : Envoyer des données à un script Php