Un nouveau problème :
Je souhaite récupérer sur un serveur ouvert (API) un fichier au format json en conservant sa structure pour faire des tris ensuite.
Lorsque vous mettez dans votre navigateur : https://api.flightplandatabase.com/nav/airport/LFKC
Ce serveur vous retourne immédiatement (extrait) au format json avec sa structure json ?
Code : Tout sélectionner
<response>
<airport>
<ICAO>LFKC</ICAO>
<IATA>CLY</IATA>
<name>St Catherine</name>
<regionName>France</regionName>
<elevation>208.00000031616003</elevation>
<lat>42.5308</lat>
<lon>8.79298</lon>
<magneticVariation>2.57476996741889</magneticVariation>
<timezone>
<name>Europe/Paris</name>
<offset>3600</offset>
</timezone>
<times>
<sunrise>2020-02-04T06:37:45.983Z</sunrise>
<sunset>2020-02-04T16:42:10.496Z</sunset>
<dawn>2020-02-04T06:08:03.044Z</dawn>
<dusk>2020-02-04T17:11:53.435Z</dusk>
</times>
<runwayCount>1</runwayCount>
<runways>
<runway>
<ident>18</ident>
<width>131.233596</width>
<length>7585.990825179</length>
<bearing>179.814</bearing>
<surface>CONCRETE</surface>
<markings>
<marking>APP</marking>
</markings>
...
Code : Tout sélectionner
InitNetwork()
Source_File$ = "LFKC.json"
ReceiveHTTPFile("https://api.flightplandatabase.com/nav/airport/LFKC", Source_File$)
If Not OpenFile(0, Source_File$)
MessageRequester("Erreur","Echec")
End
EndIf
While Not Eof(0)
Txt$ = ReadString(0, #PB_UTF8)
Wend
;=============================================================================================
If ReadFile(0, Source_File$)
Txt$ = ReadString(0, #PB_UTF8) ; une seule ligne à lire dans le fichier !
CloseFile(0)
EndIf
Txt$ = Txt$ + "," ; Ajout d'une virgule à la fin du fichier pour voir la ligne TAF
Dim L$(5000)
z = 1
For x = 0 To Len(Txt$)
line$ = line$ + Mid(Txt$,x,1)
If Mid(Txt$,x,1) = ","
line$ = ReplaceString(line$, ",", "")
line$ = ReplaceString(line$, "{", "")
line$ = ReplaceString(line$, "}", "")
line$ = ReplaceString(line$, "]", "")
line$ = ReplaceString(line$, "[", "")
line$ = ReplaceString(line$, Chr(34), "")
;Debug line$ ; Lecture des lignes complétes avec entêtes
L$(z) = line$
z = z + 1
line$ = ""
EndIf
Next
; Enregistrement des lignes décodées et nettoyées
DeleteFile(Source_File$)
ReDim L$(z-1)
If OpenFile(0,Source_File$)
GetCurrentDirectory()
For zz = 1 To z - 1
WriteStringN(0,L$(zz))
Next
EndIf
CloseFile(0)