Bonsoir,
Je participe au dévellopement d'un Editeur Web et j'aimerais réaliser la validation d'un document par le w3c via la classe QHttp. Je me suis renseigné sur l' API de la W3C ici et j'ai ainsi realisé ce bout de code :
Editeur est un QTextEdit, et j'aimerais donc récupérer le texte de ce QTextEdit et l'envoyer à la W3C tester sa validité.
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 void Editeur::validation() { QHttpRequestHeader header("POST", "/check", 1, 1); header.setValue("Host", "validator.w3.org"); header.setValue("Content-type", "multipart/form-data, boundary=AaB03x"); header.setValue("Cache-Control", "no-cache"); header.setValue("Accept","*/*"); QByteArray text = this->toPlainText().toLatin1 (); if(bytes) delete bytes; bytes = new QByteArray(); bytes->append("--AaB03x\r\n"); bytes->append("Content-Disposition: "); bytes->append("form-data; name=\"uploaded_file\"; filename=\"test\"\r\n"); bytes->append("\r\n"); bytes->append(text); bytes->append("\r\n"); bytes->append("--AaB03x--"); int contentLength = bytes->length(); header.setContentLength(contentLength); QFile file("out.txt"); file.open(QIODevice::WriteOnly); http->setHost("validator.w3.org", 80); http->request(header, *bytes, &file); }
J'ai des problèmes un peu partout mais malheureusement je n'arrive pas à les identifier
Je me suis aidé de deux signaux émis par le QHttp pour essayer d'identifier les problèmes :
Mes problèmes : tout d'abord "http->errorString().toStdString()" m'affiche tout le temps Unknown Error, je n'ai pas réussi une seule fois à recevoir un message me signalant aucune erreur.
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 connect(http, SIGNAL(stateChanged(int)), this, SLOT(etat(int))); connect(http, SIGNAL(responseHeaderReceived(QHttpResponseHeader)), this, SLOT(reponse(QHttpResponseHeader))); ... void Editeur::etat(int i) { cout<<i; cout<<http->errorString().toStdString()<<endl; } void Editeur::reponse(QHttpResponseHeader t) { cout<<<<endl; }
Ensuite, j'ai des problèmes d' écritures dans le fichier : Quand le programme ne plante pas à la ligne http->request(header, *bytes, &file); , j'ai un message d'erreur me signifiant qu'il y a un problème avec le write du QIODevice ...
La seule bonne nouvelle malgré tout est que t.reasonPhrase().toStdString() me renvoit tout le temps OK ^^
Voila j'espère que vous pourrez éclairer ma petite lanterne !!
Cordialement
P.S : Je programme sous windows![]()
Partager