IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Réseau Discussion :

Web request qui ne fonctionne pas


Sujet :

Réseau

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1
    Par défaut Web request qui ne fonctionne pas
    Bonjour, je me permets de poster un message sur ce forum, car bien qu'en règle générale, je trouve une solution à mes problèmes dans des topic déjà existant aujourd'hui, je ressors bredouille dans ma quête du savoir.

    Tout d'abord, merci a tout ceux qui prendront le temps de me déchiffrer et qui en plus prendrons le temps de m'instruire.

    Alors voili voilou le souci j'ai une ptite classe APIConnectable qui aura pour rôle d'envoyer des WebRequest en masquant le fonctionnement

    APIConnectable.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    #include "WebRequest.h"
    #include <QNetworkAccessManager>
    #include <QNetworkReply>
    #include <QObject>
     
    class APIConnectable:public QObject
    {
    Q_OBJECT
    public:
        static APIConnectable* getInstance();
        void sendRequest(WebRequest &r);
        ~APIConnectable();
    private:
        static QNetworkAccessManager* manager;
        static APIConnectable* instance;
        APIConnectable();
        QNetworkReply* rply;
    };
    APIConnectable.cpp

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    #include "APIConnectable.h"
    #include <iostream>
     
    APIConnectable* APIConnectable::instance=nullptr;
    QNetworkAccessManager* APIConnectable::manager=nullptr;
     
    APIConnectable::APIConnectable()
    {
        manager = new QNetworkAccessManager();
    }
     
    APIConnectable* APIConnectable::getInstance()
    {
        if(instance==nullptr )
        {
            instance = new APIConnectable();
        }
        return instance;
    }
     
    void APIConnectable::sendRequest(WebRequest &r)
    {
     
    qDebug()<<"j'arrive la np";
    rply= manager->get(*r.getQNetworkRequest());
    QObject::connect(rply,SIGNAL(finished()),&r,SLOT(requestCompleted()));
     
    }
     
    APIConnectable::~APIConnectable()
    {
    return;
    }
    WebRequest.h


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    #include "Request.h"
    #include "QNetworkRequest"
    #include "QNetworkReply"
    #include "QUrl"
    #include <iostream>
    #include <QObject>
    class WebRequest:public QObject
    {
     Q_OBJECT
    private:
        QNetworkReply *reply;
        QNetworkRequest qNetworkRequest;
    public:
        static const QString endParameter;
        WebRequest(QUrl url);
        WebRequest(QString urlString);
        WebRequest(QString urlBegin, QList<QPair<QString,QString>> parameterList);
        ~WebRequest();
        QNetworkRequest* getQNetworkRequest();
        QNetworkReply* getReply();
        QString buildUrlFromList(QList<QPair<QString,QString>> parameterList);
        bool isFinished();
    public slots:
     
         void requestCompleted();
    };
    WebRequest.cpp

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
    #include "WebRequest.h"
    #include <QDebug>
    const QString WebRequest::endParameter="ENDPARAMETER";
     
    QNetworkRequest* WebRequest::getQNetworkRequest()
    {
        return new QNetworkRequest(qNetworkRequest);
    }
    void WebRequest::requestCompleted()
    {
     
         qDebug()<<"good ou pas mdr ";
         reply=static_cast<QNetworkReply*>(sender());
     
     
    }
     
    QNetworkReply* WebRequest::getReply()
    {
        return reply;
    }
     
    WebRequest::WebRequest(QUrl url)
    {
        qNetworkRequest= QNetworkRequest(url);
    }
     
    WebRequest::WebRequest(QString urlString)
    {
        qNetworkRequest=QNetworkRequest( QUrl(urlString));
    }
     
    WebRequest::WebRequest(QString urlBegin, QList<QPair<QString,QString>> parameterList)
    {
        QString urlEnd= buildUrlFromList(parameterList);
        qNetworkRequest=QNetworkRequest( QUrl(urlBegin+urlEnd));
    }
     
    QString WebRequest::buildUrlFromList(QList<QPair<QString,QString>> urlList)
    {
        QString builtUrl;
        while(!urlList.isEmpty())
        {
           QPair<QString,QString> currentPair = urlList.takeFirst();
           builtUrl+= currentPair.first + currentPair.second;
        }
        return builtUrl;
    }
     
    bool WebRequest::isFinished()
    {
        return reply->isFinished();
    }
    WebRequest::~WebRequest()
    {
    return;
    }

    Et le petit main pour tester tout ca


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    #include <iostream>
    #include <WebRequest.h>
    #include <APIConnectable.h>
    #include <QApplication>
    #include <WebRequest.h>
    using namespace std;
     
    int main(int argc, char *argv[])
    {
     
        QApplication a(argc, argv);
        APIConnectable* connector= APIConnectable::getInstance();
        APIConnectable* connector2= APIConnectable::getInstance();
        WebRequest request(QUrl("https://nominatim.openstreetmap.org/search?q=2+rue+capitaine+pellot&format=xml&polygon=1&addressdetails=1"));
        qDebug()<<connector<< connector2;
     
        connector->sendRequest(request);
     
        return 0;
    }
    Et le problème, c'est que le signal n'est jamais émis et je ne sais pas pourquoi si la requête ne fonctionne par si c'est la connexion qui foire ou si le problème vient d'ailleurs.
    Je suis plutôt novice avec Qt, je ne l'utilise que depuis quelques semaines, je n'ai pas encore eu la chance de voir l'intégralité de ses fonctionnalitées, mais il me semble que pour voir émettre un signal et en recevoir, il faut rajouter la ligne Q_object que j'ai rajouté au début de mes classes hérité de QObject et dans le .pro mettre core et widget.

    voila je sais pas trop si j'ai bien exprimé mon problème mais je remercie a nouveaux tout ce qui prendrons le temps de répondre bonne journée a vous
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Réponses: 0
    Dernier message: 24/11/2013, 08h45
  2. Web App qui ne fonctionne pas (bien)
    Par Nono_Robot dans le forum Développement iOS
    Réponses: 0
    Dernier message: 14/01/2013, 16h07
  3. Site web qui ne fonctionne pas, pour expert
    Par XGuarden dans le forum Développement
    Réponses: 4
    Dernier message: 13/09/2011, 11h55
  4. Réponses: 2
    Dernier message: 22/07/2009, 08h39
  5. UNION qui ne fonctionne pas
    Par r-zo dans le forum Langage SQL
    Réponses: 7
    Dernier message: 21/07/2003, 10h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo