Problem mit QHttp

Alles rund um die Programmierung mit Qt
PeterLustig
Beiträge: 386
Registriert: 21. November 2007 20:07

Beitrag von PeterLustig »

Schau mal was patrik schrieb..
Strugge
Beiträge: 20
Registriert: 26. April 2008 16:25

Beitrag von Strugge »

sein code macht exakt dasselbe wie meiner, nur dass er etwas länger ist und den umweg über einen header macht!
PeterLustig
Beiträge: 386
Registriert: 21. November 2007 20:07

Beitrag von PeterLustig »

Oder das Beispiel von QHttp?
Strugge
Beiträge: 20
Registriert: 26. April 2008 16:25

Beitrag von Strugge »

das beispiel lädt eine datei per http von einem server runter!
das ist auch nicht das was ich brauche!
PeterLustig
Beiträge: 386
Registriert: 21. November 2007 20:07

Beitrag von PeterLustig »

Das ist genau was du brauchst.. Was meinst du macht der Browser anders? Der ruft auch nur die URL "/sendsms.php?user=fubar&password=..." ab.
patrik08
Beiträge: 746
Registriert: 27. Februar 2006 10:48
Wohnort: DE Freiburg

Beitrag von patrik08 »

Wenn ich zu der url
http://213.158.112.40/smsgw/sendsms.php sende
sei es POST oder GET oder auch DELETE MKCOOL und andere

mit meinem HTTP debugger
http://www.qt-apps.org/content/show.php ... tent=76432


kommt immer die selbe antwort ....

502 MISSING USER
503 MISSING PASSWORD
504 MISSING SENDER
505 MISSING RECIPIENT
507 MISSING MESSAGE

im header kommt:
----------------------incomming header----------------------------
Header responds = 200
date=Sat, 26 Apr 2008 20:14:30 GMT
server=Apache/2.2.3 (Debian) PHP/5.2.0-8+etch1
x-powered-by=PHP/5.2.0-8+etch1
content-length=112
keep-alive=timeout=15, max=100
connection=Keep-Alive
content-type=text/html; charset=UTF-8


Ich rate dir zuerst dass PHP script so einstellen dass es nur mit post geht
und dann ein normales html formular mit post zu machen das funktioniert
dann geht es auch mit QT schneller...
.........................
speack português italiano deutsch english castellà qt
Strugge
Beiträge: 20
Registriert: 26. April 2008 16:25

Beitrag von Strugge »

@Patrik: Dass er dir als Antwort die fehlenden Daten gibt ist klar, denn die sind ja in der URL kodiert! Siehe in meinem Code
paramString mit den ganzen .arg(...).arg(...)!
ich will die komplette URL einfach nur an den server schicken der sie ausführen soll!
dann wird nämlich eine sms verschickt!
wenn ich die komplette URL in meinem browser eingebe, funktioniert alles wunderbar! nun will ich das aber aus einer qt app heraus machen!

danke und gruß,
matthias
PeterLustig
Beiträge: 386
Registriert: 21. November 2007 20:07

Beitrag von PeterLustig »

Und ich hab dir bereits gesagt wie das geht. Also wo liegt noch das Problem?
patrik08
Beiträge: 746
Registriert: 27. Februar 2006 10:48
Wohnort: DE Freiburg

Beitrag von patrik08 »

Ich begreife deinen stand punkt... jedoch muss dass php script dann auch richtig den sms text decodieren ...

Wenn du umbedingt Get method willst ... der laengere weg wo text decodierung fast immer fehler gibt ... und alle passworter und text
im log file bleiben jahrelang wo man sie auch suchen kann in statistiken .. und in router points... provider ecc.. sicherheit null

dann muss dass php script etwa so sein...

Code: Alles auswählen

/* php */
if ($_SERVER['REQUEST_METHOD'] == "GET") {

if (isset($_GET['user']) && 
      isset($_GET['pass'])  && 
      isset($_GET['text']) ) {
  
$user = utf8_decode(rawurldecode($_GET['user']));
$passwort = utf8_decode(rawurldecode($_GET['pass']));
$smstext = utf8_decode(rawurldecode($_GET['text']));

  /* handler */
}

echo "gut/nicht gesended OK lesbare beastatigung";
exit;
}
header("Location: http://www.hackerhighschool.org/");

/*
mit qt muss du dan die url zusammen bauen ...

*/

QUrl  url("http://213.158.112.40//smsgw/sendsms.php");     
         url.addQueryItem ("user", user);
         url.addQueryItem ("pass", pass);
          url.addQueryItem ("text", text);

/* richtig decodiert alle char 
da wenn man die url mit & und ? gibt geht meistens nichts ... 
http://doc.trolltech.com/4.3/qurl.html#ParsingMode-enum
ausser du codierst alles richtig im text 

sendsms.php?text=heute%20alles%20gut 
und qurl finded keine fehler im QUrl::StrictMode

*/


Mit post ist alles sicher und bleibt keine spur auf den server und provider
da alles im header ist oder im stream senden...
beispiel http://www.qtforum.de/forum/viewtopic.php?t=2255

und von seite des php mus nicht viel decodiert werden ....
nur noch utf8_decode( variablen hinein )
wenn du die sms mitlesen moechtest ... kanns du ja eine extra DB anlegen und alles geschutzt registrieren....

Ich mache auch daten upload mit meinen programme... meisten mit der methode PUT ( http://en.wikipedia.org/wiki/HTTP ) die fast keinen browser machen kann
http://www.qtforum.de/forum/viewtopic.php?t=3085
und pass gebe ich mit einem cookie mit und noch andere parameter ...
dann bin ich sicher dass nur wenige programme dieses server script ausfuehren konnen .. und zudem schneller als POST...
.........................
speack português italiano deutsch english castellà qt
Strugge
Beiträge: 20
Registriert: 26. April 2008 16:25

Beitrag von Strugge »

danke für die antworten!
also mit dem PHP script muss ich mich net beschäftigen, da dies bereits von dem SMS Provider zur Verfügung steht!
es geht wirklich nur darum, die URL per http aufzurufen!
PeterLustig
Beiträge: 386
Registriert: 21. November 2007 20:07

Beitrag von PeterLustig »

Beispiele von QHttp anschauen, dort steht ganz genau wie man eine Seite aufruft.
Strugge
Beiträge: 20
Registriert: 26. April 2008 16:25

Beitrag von Strugge »

Habe nun folgenden Code geschrieben:

QString user = ui.m_qLineEdit_User->text();
QString passwd = ui.m_qLineEdit_Password->text();
QString sender = ui.m_qLineEdit_Sender->text();
QString recipient = ui.m_qLineEdit_Recipient->text();
QString message = ui.m_qTextEdit_SMSMessage->toPlainText();

QUrl url("http://213.158.112.40/smsgw/sendsms.php");
url.addQueryItem ("user", user);
url.addQueryItem ("password", passwd);
url.addQueryItem ("sender", sender);
url.addQueryItem ("recipients", recipient);
url.addQueryItem ("message", message);

m_pHttp = new QHttp;
QHttp::ConnectionMode mode = url.scheme().toLower() == "https" ? QHttp::ConnectionModeHttps : QHttp::ConnectionModeHttp;
m_pHttp->setHost(url.host(), mode, url.port() == -1 ? 0 : url.port();
connect(m_pHttp, SIGNAL(responseHeaderReceived(const Header&)), this, SLOT(finished(const QHttpResponseHeader&)));
m_pHttp->get(url.path());


ich bekomme vom sever auch die antwort OK (wie vorher), aber verschickt wird die sms wieder nicht! ;(

Danke u. Gruß,
M.
Strugge
Beiträge: 20
Registriert: 26. April 2008 16:25

Beitrag von Strugge »

noch jm. ne weiterführende idee?

habe folgende zeile:
m_pHttp->get(url.path());

geändert zu:
m_pHttp->post(url.path(), url.encodedQuery());

auch das leider ohne erfolg!

danke sehr und gruß,
m.
patrik08
Beiträge: 746
Registriert: 27. Februar 2006 10:48
Wohnort: DE Freiburg

Beitrag von patrik08 »

Strugge hat geschrieben:noch jm. ne weiterführende idee?

habe folgende zeile:
m_pHttp->get(url.path());

geändert zu:
m_pHttp->post(url.path(), url.encodedQuery());

auch das leider ohne erfolg!

danke sehr und gruß,
m.
Darum sage ich....... mache zuerst ein html formular von der 1° klasse nur 5 zeilen ... wenn der browser dann nicht senden kann wie soll es QT machen?
.........................
speack português italiano deutsch english castellà qt
Strugge
Beiträge: 20
Registriert: 26. April 2008 16:25

Beitrag von Strugge »

nochmal: mit einem browser klappt das senden der sms über den service provider einwandfrei! nur bei meinem source code scheint noch ein kleiner denkfehler drin zu sein!
Antworten