QHttp: einfacher download einer php seite?
QHttp: einfacher download einer php seite?
hallo,
hab mich durch die ganzen examples von qt gequält aber leider bin ich immer noch nicht wirklich schlau draus geworden.
ich will mit qhttp einfach eine php seite von einem server runterladen und dann den inhalt als string zur verfügung haben. die datei muss nicht zwingend gespeichert werden, bzw wieder gelöscht werden wenn der String mit dem inhalt vorhanden ist.
wie müsste das in der einfachsten ausführung (ohne fehlermeldungen) aussehen?
vielen dank im vorraus
hab mich durch die ganzen examples von qt gequält aber leider bin ich immer noch nicht wirklich schlau draus geworden.
ich will mit qhttp einfach eine php seite von einem server runterladen und dann den inhalt als string zur verfügung haben. die datei muss nicht zwingend gespeichert werden, bzw wieder gelöscht werden wenn der String mit dem inhalt vorhanden ist.
wie müsste das in der einfachsten ausführung (ohne fehlermeldungen) aussehen?
vielen dank im vorraus
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Code: Alles auswählen
QBuffer m_buf;
QHttp m_http;
int m_idGet;
...
m_buf.open(QBuffer::ReadWrite);
m_http.setHost("www.trolltech.com");
m_idGet = m_http.get(QUrl::toPercentEncoding("/index.html"), &m_buf);
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung
danke für die antworten.
doch leider steig ich da gar nicht durch! was ich genau machen will ist: mit QHttp eine php datei mit post-data aufrufen und das ergebnis(den quelltext) wieder in einem string zu haben:
in etwa so:
aber irgendwie will das nicht so wirklich! die ausgabe der php seite ist nur ein text mit 10 buchstaben. was mach ich falsch?
doch leider steig ich da gar nicht durch! was ich genau machen will ist: mit QHttp eine php datei mit post-data aufrufen und das ergebnis(den quelltext) wieder in einem string zu haben:
in etwa so:
Code: Alles auswählen
QBuffer buff;
QHttp http;
int id;
QString host = "http://blabla.../";
QString data = "fx=test&pg=2";
buff.open (QBuffer::ReadWrite);
http.setHost (host);
id = http.post (QUrl::toPercentEncoding ("/output.php"), data, &buff);
QString new = buff.readall ();-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
versteh ich dich richtig? der int gibt das signal zurück? ausserdem bekomm ich für folgende zeile:
folgende fehlermeldung:
was stimmt daran nicht?
Code: Alles auswählen
id = http.post (QUrl::toPercentEncoding ("/output.php"), data, &buff);Code: Alles auswählen
no matching function for call to `QHttp::post(QByteArray, QString&, QBuffer**)-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Ist es so schwer ne Doku zu lesen? Da steht doch nun alles!wayneos hat geschrieben:versteh ich dich richtig? der int gibt das signal zurück?
folgende fehlermeldung:
m_buf ist bei Dir ein Pointer, also ist &m_buf ein Pointer auf einen Pointer. C Basics würde ich sagen.wayneos hat geschrieben:was stimmt daran nicht?Code: Alles auswählen
no matching function for call to `QHttp::post(QByteArray, QString&, QBuffer**)
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung
Da ist m_buf aber kein pointer auf QBuffer sondern ein Objekt. Das & vor einem Objekt bewirkt das übergeben des Pointers auf das Objekt. Aber wie schon gesagt wurde sind das Basics die man vorher wissen sollte bevor man Qt verwendetwayneos hat geschrieben:ok merci! aber auch ohne das & zeichen kommt der fehler!
ps...das & ist aus deinem ersten beispiel übernommen!
Gut Schuß
Christian
Es gibt nur 3 natürliche Feinde des Programmierers: Tageslicht, frische Luft und das unerträgliche Gebrüll der Vögel.
Oft ist die Ursache des schwarzsehens lediglich ein verrutschen des Bretts vorm Kopf =)
Oft ist die Ursache des schwarzsehens lediglich ein verrutschen des Bretts vorm Kopf =)
ok hab nun folgendes gebastelt.
infotabelle.h
infotabelle.cpp
es lässt sich ohne fehler compilen aber sobald dann das programm refresh () ausführt kommt ein appcrash des moduls qtnetwork4.dll..
was soll das bedeuten?
infotabelle.h
Code: Alles auswählen
#ifndef INFOTABELLE_H
#define INFOTABELLE_H
#include <QWidget>
#include <QComboBox>
#include <QUrl>
#include <QBuffer>
class start : public QWidget {
Q_OBJECT
public:
start (QWidget *parent = 0);
QComboBox *cobx;
QBuffer *buff;
public slots:
void refresh ();
void roger ();
signals:
void changed (QString);
};
#endifCode: Alles auswählen
#include "infotabelle.h"
#include <QApplication>
#include <QHttp>
#include <QHttpRequestHeader>
start::start (QWidget *parent) : QWidget (parent) {
cobx = new QComboBox (this);
}
void start::refresh () {
QString host = "http://...";
QString data = "fx=start&lh=";
buff = new QBuffer;
buff -> open (QBuffer::ReadWrite);
QHttp *http;
QHttpRequestHeader header ("POST", "/output.php");
header.setValue("Host", host);
http -> setHost (host);
header.setValue ("User-Agent", "User Agent");
header.setContentType ("application/x-www-form-urlencoded");
http -> request (header, data.toUtf8 (), buff);
connect (http, SIGNAL (requestFinished ()), this, SLOT (roger ()));
}
void start::roger () {
QString output;
output = buff -> readAll ();
QStringList list;
list = output.split("--");
int l = list.size ();
for (int i = 0; i < l; i++) {
cobx -> addItem (tr ("1%").arg (list.at (i)));
}
}was soll das bedeuten?
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten: