Soucis avec ReceiveHTTPFile (Résolu)

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Jackymb
Messages : 17
Inscription : mer. 04/août/2004 10:09
Localisation : Aix en Provence

Soucis avec ReceiveHTTPFile (Résolu)

Message par Jackymb »

Bonsoir à tous,

Je bute sur un soucis avec: ReceiveHTTPFile.
ça fonctionne bien avec DropBox, mais j'ai un problème avec OneDrive (et GoogleDrive), il ne récupère pas le fichier correctement.

code utilisé:

Code : Tout sélectionner

InitNetwork()

;Lien$ = "https://1drv.ms/i/s!AiEBAUWrCd5FmSXBLHC4iYcMM-5v"
;NomDeFichier$ = "d:\#Downloads\" + "Onedrive.jpg"

Lien$ = "https://www.dropbox.com/s/4qxy5znaeq3xxqj/Data.jpg?dl=1"
NomDeFichier$ = "d:\#Downloads\" + "Data_db.jpg"

  If ReceiveHTTPFile(Lien$, NomDeFichier$)
    Debug "Succès"
  Else
    Debug "Echec"
  EndIf
Quelqu'un aurait une explication?

Merci pour vos réponses.

Jacky
Dernière modification par Jackymb le jeu. 16/févr./2017 1:26, modifié 1 fois.
Windows 11 x64 - PB 6.20 x64 - PB 6.21 x64 beta
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: Soucis avec ReceiveHTTPFile

Message par GallyHC »

Bonjour,

Perso, je ne vois que la destination qui pourrait posé problème (genre "#Downloads" un "s" en trop), car pour moi aucun problème.

Code : Tout sélectionner

InitNetwork()

Lien$         = "https://www.dropbox.com/s/4qxy5znaeq3xxqj/Data.jpg?dl=1"
NomDeFichier$ = "d:\Data_db.jpg"

If ReceiveHTTPFile(Lien$, NomDeFichier$)
  Debug "Succès"
Else
  Debug "Echec"
EndIf
Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
Jackymb
Messages : 17
Inscription : mer. 04/août/2004 10:09
Localisation : Aix en Provence

Re: Soucis avec ReceiveHTTPFile

Message par Jackymb »

Bonsoir GallyHC,

Merci d'avoir regardé, mais c'est avec onedrive que çà me pose soucis.
Le fichier est bien dans le même répertoire, mais incorrect.

Code : Tout sélectionner

InitNetwork()

Lien$ = "https://1drv.ms/i/s!AiEBAUWrCd5FmSXBLHC4iYcMM-5v"
NomDeFichier$ = "d:\#Downloads\" + "Onedrive.jpg"

  If ReceiveHTTPFile(Lien$, NomDeFichier$)
    Debug "Succès"
  Else
    Debug "Echec"
  EndIf
Cordialement,
Jacky
Windows 11 x64 - PB 6.20 x64 - PB 6.21 x64 beta
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: Soucis avec ReceiveHTTPFile

Message par GallyHC »

Je viens de faire le test en créant le répertoire "#Downloads". Le ficher "Onedrive.jpg" est bien télécharger (bon par contre c'est un fichier texte donc aucun rapport avec un .jpg). met plutôt "Onedrive.txt".

Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
Jackymb
Messages : 17
Inscription : mer. 04/août/2004 10:09
Localisation : Aix en Provence

Re: Soucis avec ReceiveHTTPFile

Message par Jackymb »

pourquoi?

Le fichier est bien une image "JPG", puisque c'est moi qui l'est mis.

essai le lien en direct dans le navigateur:
https://1drv.ms/i/s!AiEBAUWrCd5FmSXBLHC4iYcMM-5v

Cordialement.
Jacky
Windows 11 x64 - PB 6.20 x64 - PB 6.21 x64 beta
Avatar de l’utilisateur
cage
Messages : 604
Inscription : ven. 16/oct./2015 18:22
Localisation : France
Contact :

Re: Soucis avec ReceiveHTTPFile

Message par cage »

Code : Tout sélectionner

InitNetwork()

Lien$ = "https://1drv.ms/i/s!AiEBAUWrCd5FmSXBLHC4iYcMM-5v"

Header$ = GetHTTPHeader(Lien$)

Debug Header$

End
Ce bout de code affiche

Code : Tout sélectionner

HTTP/1.1 405 Method Not Allowed
Content-Length: 103
Content-Type: application/json; charset=utf-8
Server: Microsoft-IIS/8.5
X-MSNSERVER: DM5SCH102230223
Strict-Transport-Security: max-age=31536000; includeSubDomains
X-QosStats: {"ApiId":0,"ResultType":2,"SourcePropertyId":0,"TargetPropertyId":42}
X-ThrowSite: 4d6d.dbc6
X-AsmVersion: UNKNOWN; 16.0.0.0
X-MSEdge-Ref: Ref A: CE673FA82C6F4E54A365FD6389707B56 Ref B: PRASCHEDGE0406 Ref C: Wed Feb 15 13:25:17 2017 PST
Date: Wed, 15 Feb 2017 21:25:17 GMT
Il est donc normal de ne pouvoir récupérer le fichier.
Le fichier récupéré est la page html que l'on obtient avec un navigateur et qui permet de télécharger le fichier.
Il manque quelque-chose comme ?dl=1 (dropbox) a l'URL OneDrive
■ Win10 Pro 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.12 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: Soucis avec ReceiveHTTPFile

Message par GallyHC »

La tu pointe sur une page HTML qui affiche ton image. Le lien de l'image est "https://by3302files.storage.live.com/y3 ... ode=center".

Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
Jackymb
Messages : 17
Inscription : mer. 04/août/2004 10:09
Localisation : Aix en Provence

Re: Soucis avec ReceiveHTTPFile

Message par Jackymb »

Bonsoir,

Avec les réponses que vous m'avez fournis et des recherches sur le net, j'ai résolu mon soucis.

OneDrive:
Après avoir récupéré le lien du fichier, il faut modifié l'URL en replaçant embed par download

lien original: "https://onedrive.live.com/[b]embed[/b]?cid=45DE09AB45010121&resid=45DE09AB45010121%213237&authkey=AHjJ0Wc-_jtqpeo"
lien modifié: "https://onedrive.live.com/[b]download[/b]?cid=45DE09AB45010121&resid=45DE09AB45010121%213237&authkey=AHjJ0Wc-_jtqpeo"

Code : Tout sélectionner

InitNetwork()

Lien$ = "https://onedrive.live.com/download?cid=45DE09AB45010121&resid=45DE09AB45010121%213237&authkey=AHjJ0Wc-_jtqpeo"
NomDeFichier$ = "c:\Users\Jacky\Downloads\" + "Onedrive.jpg"

  If ReceiveHTTPFile(Lien$, NomDeFichier$)
    Debug "Succès"
  Else
    Debug "Echec"
  EndIf
GoogleDrive:
Après avoir récupéré le lien du fichier, il faut modifié l'URL en gardant id du fichier et modifier l'url

lien original: "https://drive.google.com/file/d/0B_PDPZ4SJxWielNCSkYxNDBMUG8/view?usp=sharing"
lien modifié: "https://drive.google.com/[b]uc?export=download&id=[/b]0B_PDPZ4SJxWielNCSkYxNDBMUG8"

Code : Tout sélectionner

InitNetwork()

;https://drive.google.com/file/d/0B_PDPZ4SJxWielNCSkYxNDBMUG8/view?usp=sharing

Lien$ = "https://drive.google.com/uc?export=download&id=0B_PDPZ4SJxWielNCSkYxNDBMUG8"
NomDeFichier$ = "c:\Users\Jacky\Downloads\" + "Googledrive.png"

  If ReceiveHTTPFile(Lien$, NomDeFichier$)
    Debug "Succès"
  Else
    Debug "Echec"
  EndIf
Voilà si çà peut servir.

Cordialement.

Jacky
Windows 11 x64 - PB 6.20 x64 - PB 6.21 x64 beta
boby
Messages : 261
Inscription : jeu. 07/juin/2007 22:54

Re: Soucis avec ReceiveHTTPFile (Résolu)

Message par boby »

Toujours bon à savoir, merci d'avoir fait part de ta solution !
Avatar de l’utilisateur
cage
Messages : 604
Inscription : ven. 16/oct./2015 18:22
Localisation : France
Contact :

Re: Soucis avec ReceiveHTTPFile (Résolu)

Message par cage »

Merci pour le retour.
■ Win10 Pro 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.12 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Soucis avec ReceiveHTTPFile (Résolu)

Message par Ar-S »

Petite procédure pour corriger ça tout seul.

Code : Tout sélectionner

Procedure.s ParseDriveUrl(url$)
  ;Ar-S
  If FindString (url$,"google",0, #PB_String_NoCase) > 0
    ID$ = RemoveString(url$,"https://drive.google.com/file/d/")
    ID$ = RemoveString(ID$,"/view?usp=sharing")
    DownloadLink.s = "https://drive.google.com/uc?export=download&id="+ID$
    
  ElseIf FindString (url$,"onedrive",0, #PB_String_NoCase) > 0
    DownloadLink.s = ReplaceString(url$,"embed","download")
  Else
    DownloadLink = "Bad Link Error"
  EndIf
 
  ProcedureReturn DownloadLink.s
EndProcedure

InitNetwork()

; Correction automatique des URI Gdrive et Onedrive
LienOdrive$ = ParseDriveUrl("https://onedrive.live.com/embed?cid=45DE09AB45010121&resid=45DE09AB45010121%213237&authkey=AHjJ0Wc-_jtqpeo")
LienGdrive$ = ParseDriveUrl("https://drive.google.com/file/d/0B_PDPZ4SJxWielNCSkYxNDBMUG8/view?usp=sharing")

; destination
GOOGFILE$ = "F:\Googledrive.png"
ODRIVEFILE$ = "F:\Odrivedrive.png"

  If ReceiveHTTPFile(LienGdrive$, GOOGFILE$)
    Debug "Succès"
  Else
    Debug "Echec"
  EndIf
  
  If ReceiveHTTPFile(LienOdrive$, ODRIVEFILE$)
    Debug "Succès"
  Else
    Debug "Echec"
  EndIf
    
  
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Jackymb
Messages : 17
Inscription : mer. 04/août/2004 10:09
Localisation : Aix en Provence

Re: Soucis avec ReceiveHTTPFile (Résolu)

Message par Jackymb »

Bonjour,

Merci Ar-S pour la proc. C'était ma prochaine étape à écrire.

Tu as été plus rapide, Je me permettrai de la réutiliser.

cordialement.

Jacky
Windows 11 x64 - PB 6.20 x64 - PB 6.21 x64 beta
Répondre