Page 1 sur 1

[OK] Envoyer un lien HTTPS via PB

Publié : mer. 17/juin/2015 17:54
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

Re: Envoyer un lien HTTPS via PB

Publié : jeu. 18/juin/2015 7:37
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.

Re: Envoyer un lien HTTPS via PB

Publié : jeu. 18/juin/2015 7:54
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

Re: Envoyer un lien HTTPS via PB

Publié : jeu. 18/juin/2015 8:02
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

Re: Envoyer un lien HTTPS via PB

Publié : jeu. 18/juin/2015 9:35
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:

Re: Envoyer un lien HTTPS via PB

Publié : jeu. 18/juin/2015 11:38
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.

Re: Envoyer un lien HTTPS via PB

Publié : jeu. 18/juin/2015 12:58
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.

Re: Envoyer un lien HTTPS via PB

Publié : jeu. 18/juin/2015 13:20
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

Re: Envoyer un lien HTTPS via PB

Publié : jeu. 18/juin/2015 13:53
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

Re: [OK] Envoyer un lien HTTPS via PB

Publié : jeu. 18/juin/2015 14:00
par falsam
A quoi ça sert que Fred se décarcasse :mrgreen:

URLEncoder(message) remplacera ta procédure Transform(message.s)

Re: Envoyer un lien HTTPS via PB

Publié : jeu. 18/juin/2015 16:32
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:

Re: Envoyer un lien HTTPS via PB

Publié : jeu. 18/juin/2015 16:41
par Ar-S
C'est claire, strictement à usage privé ;)