[OK] Envoyer un lien HTTPS via PB

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

[OK] Envoyer un lien HTTPS via PB

Message par Ar-S »

Salut,

J'aimerai envoyer un lien vers le net via PB sous la forme https://smsapi.free-mobile.fr/sendmsg?u ... MONMESSAGE
J'y connais pas grand chose en envoi de données web. Il faut surement utiliser InitNetwork() et OpenNetworkConnexion(), peut être aussi SendNetworkString ou/et SendNetworkData mais j'avoue être perdu.
Si vous avez une explication à donner je suis preneur.

P.S : je ne souhaite pas utiliser RunProgram... ;)
Merci
Dernière modification par Ar-S le jeu. 18/juin/2015 13:54, modifié 1 fois.
~~~~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
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Envoyer un lien HTTPS via PB

Message par Micoute »

Bonjoujr Ar-s, moi quand j'ai eut ce problème, on m'avait proposé de faire RunProgram

Code : Tout sélectionner

RunProgram("http://www.google.fr/#q=recette"+Argument$,"","")
je sais que ce n'est pas ça que tu désires, mais je n'ai pas d'autre solution.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
microdevweb
Messages : 1802
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: Envoyer un lien HTTPS via PB

Message par microdevweb »

@Ar-S,

Voici une exemple de code que j'avais fait pour récupérer les résultats de l’euro million (si tu veux je t'envoies tout le soft)

Code : Tout sélectionner

If InitNetwork()=0
      MessageRequester("Erreur","Connexion internet impossible...",#PB_MessageRequester_Ok)
      End
EndIf
Global RequeteTXT$="http://www.loterie-nationale.be/Controls/Draw/DownloadResults.ashx?"+
                   "productId=e07ce0de-9072-436f-b6ec-9a7e9475fa6f&StartDate=20040101"+
                   "&EndDate=20151201&ExportData=True"
FileName$="Resul.csv"
If ReceiveHTTPFile(RequeteTXT$,FileName$)=0
   MessageRequester("Erreur","Impossible de charger le fichier de resultat...")
    ProcedureReturn #False
EndIf
;...
J'espère que cela pourra t'aider
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
microdevweb
Messages : 1802
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: Envoyer un lien HTTPS via PB

Message par microdevweb »

Un autre exemple, cela récupérait des infos sur mon site de musique (rélaiser en Webdev)
ps: le site est hs donc ne fonctionne plus

Code : Tout sélectionner

; ***************************************************************************************************************
; Easy-musique 1.0
; Network
; Debut: 29 mars 2014
; Fin :
; Version PB: 5.22
;  © www.AllDev.be  Dévellopeur Bielen Pierre
; ***************************************************************************************************************
Structure Type_Musique
      Type.s
      Id.s
EndStructure
Global NewList  mesType_Musqiue.Type_Musique()
Structure Difficulte
      Difficulte.s
      Id.s
EndStructure
Global NewList mesDifficulte.Difficulte()
Structure Lst_Partition
      Id.s
EndStructure
Global NewList maLst_Partition.Lst_Partition()
If InitNetwork()=0
      MessageRequester("Erreur","InitNetwork a échoué...",#PB_MessageRequester_Ok)
EndIf
Declare Charge_Type_Musique()
Declare Charge_Lst_Difficulte()

Procedure Charge_Type_Musique()
      ClearList(mesType_Musqiue())
      fichier$="LST_TYPE.txt"
      If ReceiveHTTPFile("http://www.easy-musique.com/EASY_MUSIQUE_WEB/FR/ENV_LST_TYPE.awp",fichier$)=0
            MessageRequester("Erreur","La requete sur easy-musique à échouée...")
            ProcedureReturn #False  
      EndIf
      OpenFile(0,fichier$)
      If ReadAsciiCharacter(0)<>4
            FileSeek(0,Loc(0)-1)
            AddElement(mesType_Musqiue())
            While Eof(0)=0
                  Partie$=Chr(ReadAsciiCharacter(0))
                  If Partie$="/"
                        Repeat
                              Partie$=Chr(ReadAsciiCharacter(0))
                              If Partie$<>"|" And Eof(0)=0
                                    mesType_Musqiue()\Id+Partie$
                              Else
                                    If ReadAsciiCharacter(0)<>4
                                          FileSeek(0,Loc(0)-1)
                                          AddElement(mesType_Musqiue())
                                    Else
                                          Break
                                    EndIf
                              EndIf
                        Until Partie$="|"
                  EndIf
                  If Partie$<>"/" And Partie$<>"|"  And Eof(0)=0
                        mesType_Musqiue()\Type+Partie$
                  EndIf
            Wend
      EndIf
      CloseFile(0)
      DeleteFile(fichier$,#PB_FileSystem_Force)
EndProcedure

Procedure Charge_Lst_Difficulte()
      ClearList(mesDifficulte())
      fichier$="LST_Difficultes.txt"
      If ReceiveHTTPFile("http://www.easy-musique.com/EASY_MUSIQUE_WEB/FR/ENV_LIST_DIFFICULTE.awp",fichier$)=0
            MessageRequester("Erreur","La requete sur easy-musique à échouée...")
            ProcedureReturn #False  
      EndIf
      OpenFile(0,fichier$)
      If ReadAsciiCharacter(0)<>4
            FileSeek(0,Loc(0)-1)
            AddElement(mesDifficulte())
            While Eof(0)=0
                  Partie$=Chr(ReadAsciiCharacter(0))
                  If Partie$="/"
                        Repeat
                              Partie$=Chr(ReadAsciiCharacter(0))
                              If Partie$<>"|" And Eof(0)=0
                                    mesDifficulte()\Id+Partie$
                              Else
                                    If ReadAsciiCharacter(0)<>4
                                          AddElement(mesDifficulte())
                                          FileSeek(0,Loc(0)-1)
                                    Else
                                          Break
                                    EndIf
                              EndIf
                        Until Partie$="|"
                  EndIf
                  If Partie$<>"/" And Partie$<>"|"  And Eof(0)=0
                        mesDifficulte()\Difficulte+Partie$
                  EndIf
            Wend
      EndIf
      CloseFile(0)
      DeleteFile(fichier$,#PB_FileSystem_Force)
EndProcedure

Procedure Charge_Lst_Partition(Type_Partition.l,Difficulte.l)
      ClearList(maLst_Partition())
      fichier$="LST_Parition.txt"
      requette$="http://www.easy-musique.com/EASY_MUSIQUE_WEB/FR/ENV_LISTE_PARTITION.awp"
      If Type_Partition>0
            requette$+"?TYPE="+Str(Type_Partition)
      EndIf 
      If Difficulte>0
            requette$+"&DIFF="+Str(Difficulte)
      EndIf
      If ReceiveHTTPFile(requette$,fichier$)=0
            MessageRequester("Erreur","La requete sur easy-musique à échouée...")
            ProcedureReturn #False  
      EndIf
      OpenFile(0,fichier$)
      If ReadAsciiCharacter(0)<>4
            AddElement(maLst_Partition())
            FileSeek(0,Loc(0)-1)
            While Eof(0)=0
                  Partie$=Chr(ReadAsciiCharacter(0))
                  If Partie$<>"/"
                        maLst_Partition()\Id+Partie$
                  EndIf
                  If Partie$="/"
                        If ReadAsciiCharacter(0)<>4
                              FileSeek(0,Loc(0)-1)
                              AddElement(maLst_Partition())
                        Else
                              Break
                        EndIf
                  EndIf
            Wend
      EndIf
      CloseFile(0)
      DeleteFile(fichier$,#PB_FileSystem_Force)
EndProcedure

Procedure Charge_Fiche_Partition(ID_Partition$)
       fichier$="FICHE_Parition.txt"
      requette$="http://www.easy-musique.com/EASY_MUSIQUE_WEB/FR/ENV_FICHE_PARTITION.awp"
      requette$+"?ID_PARTITION="+ID_Partition$
     If ReceiveHTTPFile(requette$,fichier$)=0
            MessageRequester("Erreur","La requete sur easy-musique à échouée...")
            ProcedureReturn #False  
      EndIf
EndProcedure
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Marc56
Messages : 2198
Inscription : sam. 08/févr./2014 15:19

Re: Envoyer un lien HTTPS via PB

Message par Marc56 »

Le problème est que le liens que souhaite utiliser Ar-S est en https (http sécurisé)
et que ReceiveHTTPFile ne gère pas le https

http://stackoverflow.com/questions/2644 ... -purebasic

Si http est un simple protocole de dialogue texte, https quant à lui nécessite le cryptage du flux et la vérification du certificat serveur (ce que fait tout navigateur d'une manière transparente)

Solutions: Utiliser un programme externe (tel que cité dans l'article) ou utiliser un WebGadget, qu'on ouvre en petit et qu'on referme dès la connexion effectuée. Cela fonctionne, puisque le webgadget de PB utilise le moteur "web" de l'os
http://www.purebasic.com/french/documen ... adget.html

:wink:
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Envoyer un lien HTTPS via PB

Message par Ar-S »

Merci pour tes com'.
Je ne désire pas télécharger un fichier ou des données ça je sais le faire.. Je veux envoyer en POST le lien https.
J'ai pas pensé au webgadget tout simple... J'essayerai ce soir.
~~~~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
Marc56
Messages : 2198
Inscription : sam. 08/févr./2014 15:19

Re: Envoyer un lien HTTPS via PB

Message par Marc56 »

Si tu veux transformer le contenu de ta requête GET en requête POST (afin de dépasser les 255 caractères possibles et ne pas voir le contenu dans l'url),
je n'ai pas testé, mais ceci peut peut-être te convenir ? (post Atlante)

http://www.purebasic.fr/french/viewtopi ... =1&t=12032

Mais si le serveur est en HTTPS, cela ne fonctionnera pas.
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Envoyer un lien HTTPS via PB

Message par falsam »

Malgré son nom, ReceiveHTTPFile est une solution qui fonctionne pour envoyer des données.

Exemple d'un code (trés peu de lignes) qui permet d'envoyer un pseudo et un message.

Code : Tout sélectionner

InitNetwork()

;url
url.s  = "http://s242132022.onlinehome.fr/racal/usersay0.php"

;variables
user.s = URLEncoder("falsam")
say.s  = URLEncoder("Test avec ReceiveHTTPFile")

;Envoi des données
ReceiveHTTPFile(url + "?" + "&user=" + User + "&say=" + say, "log.txt")
Remplacez la variable user par le pseudo de votre choix et la variable say par le message que vous souhaitez.

Vérifier le résultat sur ce lien http://s242132022.onlinehome.fr/racal/usersayresult.php
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Envoyer un lien HTTPS via PB

Message par Ar-S »

Merci pour l'info Falsam, j'ai réussi en fin de compte avec un simple webgadget et un setgadgettext :mrgreen:
(comme d'hab j'étais parti dans un pourquoi faire simple quand on peut faire compliqué !)p
Du coup je peux (enfin ma petite femme peut) me SMS des messages du PC via PB.

ça marche chez l'opérateur freemobile, il faut activer l'option dans son panneau de config.
Faite une interface avec un editorgadget, un bouton pour envoyer et un webgadget pas forcement visible.
Ensuite un simple

Code : Tout sélectionner




Procedure.s Transform(message.s)
; Transforme les "é è espace" en caractère html
  NewText.s = ReplaceString(message.s," ","%20")
  NewText.s = ReplaceString(message.s,"è","%E8")
  NewText.s = ReplaceString(message.s,"é","%E9")
  ProcedureReturn NewText.s
EndProcedure

MONMESSAGE.s = Transform("Coucou c'est moi !")

setgadgettext(#webgadget,"https://smsapi.free-mobile.fr/sendmsg?user=MONID&pass=MONPASS&msg="+MONMESSAGE.s)
Autre conseils, vérifiez que votre message < 256 car

Voilou
~~~~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
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: [OK] Envoyer un lien HTTPS via PB

Message par falsam »

A quoi ça sert que Fred se décarcasse :mrgreen:

URLEncoder(message) remplacera ta procédure Transform(message.s)
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Marc56
Messages : 2198
Inscription : sam. 08/févr./2014 15:19

Re: Envoyer un lien HTTPS via PB

Message par Marc56 »

Ar-S a écrit : setgadgettext(#webgadget,"https://smsapi.free-mobile.fr/sendmsg?u ... NMESSAGE.s)
Voilou
Attention: ça c'est une requête GET et pas POST, tes données restent en clair dans l'url dans le cache de navigateur, l'historique. À ne pas utiliser dans un lieu public.

:wink:
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Envoyer un lien HTTPS via PB

Message par Ar-S »

C'est claire, strictement à usage privé ;)
~~~~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
Répondre