Obtenir l'adresse IP de votre routeur
Publié : mer. 20/avr./2016 12:02
Le sujet a déjà été évoqué avec différentes solutions de parsing classiques d'une page web contenant l'adresse ip coincée entres deux balises.
Le site https://www.ipify.org propose une API qui retourne un fichier JSON contenant l'adresse IP de votre routeur.
La procédure que je vous présente utilise deux fonctionnalité apparus depuis la version 5.31 de Purebasic : ReceiveHTTPMemory() et ParseJSON()
Le code de base pour interroger l'API estA partir de ce code, vous trouverez une procédure qui permet d'obtenir la valeur numérique de l'adresse IP. Vous allez me dire "Mais hooooo !" Comment fait on pour retrouver notre adresse IP ?"
C'est simplePour terminer le code permettant d'utiliser GetWanIp() conjointement avec le gadget IPAddressGadget()
Le site https://www.ipify.org propose une API qui retourne un fichier JSON contenant l'adresse IP de votre routeur.
La procédure que je vous présente utilise deux fonctionnalité apparus depuis la version 5.31 de Purebasic : ReceiveHTTPMemory() et ParseJSON()
Le code de base pour interroger l'API est
Code : Tout sélectionner
InitNetwork()
*Buffer = ReceiveHTTPMemory("https://api.ipify.org?format=json")
If *Buffer
ParseJSON(0, PeekS(*Buffer, MemorySize(*Buffer), #PB_UTF8))
FreeMemory(*Buffer)
Debug GetJSONString(GetJSONMember(JSONValue(0), "ip"))
EndIf
Code : Tout sélectionner
Procedure GetWanIp()
Protected IP.s, Dim IP(4), n
Protected *Buffer = ReceiveHTTPMemory("https://api.ipify.org?format=json")
If *Buffer
ParseJSON(0, PeekS(*Buffer, MemorySize(*Buffer), #PB_UTF8))
FreeMemory(*Buffer)
IP = GetJSONString(GetJSONMember(JSONValue(0), "ip"))
For n = 1 To CountString(IP, ".") + 1
IP(n-1) = Val(StringField(IP, n, "."))
Next
ProcedureReturn MakeIPAddress(IP(0), IP(1), IP(2), IP(3))
Else
ProcedureReturn #False
EndIf
EndProcedure
C'est simple
Code : Tout sélectionner
Debug IPString(GetWanIp())
Code : Tout sélectionner
InitNetwork()
If OpenWindow(0, 0, 0, 180, 50, "WAN IP", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
IPAddressGadget(0, 10, 15, 160, 20)
SetGadgetState(0, GetWanIp())
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf