(QHTTP) PostRequest funktioniert nicht richtig

Alles rund um die Programmierung mit Qt
Antworten
Malock
Beiträge: 2
Registriert: 14. Oktober 2008 16:18

(QHTTP) PostRequest funktioniert nicht richtig

Beitrag von Malock »

Hallo,


Ich versuche zurzeit ein bisschen mit POST zu spielen. Dabei möchte ich testweise einen Request an meinen localen Blog senden. Dies gelingt jedoch nicht, ich habe bereits verschiedene möglichkeiten probiert. Keine hatte funktioniert.

Code: Alles auswählen

QString post = "title=Qt+Test+Browser&autor=Test&nachricht=Testnachrichtf&id=30";
QHttpRequestHeader header("POST", "http://localhost/blog/newcomment.php?do=submit&id=30");
header.setValue("Host", "localhost");
header.setValue("User-Agent", "Mozilla/5.0");
header.setValue("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*,q=0.8");
header.setValue("Accept-Langauge", "de-at");
header.setValue("Accept-Encoding:", "gzip, deflate");
header.setValue("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.7");
header.setValue("Keep-Alive", "300");
header.setValue("Connection", "keep-alive");
header.setValue("Referer", "http://localhost/xampp/blog/newcomment.php?id=30");
header.setValue("Cookie", "Nicht wichtig");
bytes = new QByteArray();
bytes->append("Content-Type: application/x-www-form-urlencoded\\n\\n");
bytes->append("Content-Length: " + QString::number(post.size()) + "\\n");
bytes->append("Connection: close\\n\\n"); 
bytes->append(post + "\\n");
   
   
   
   buffer = new QBuffer(bytes); 


http->setHost("localhost");
id = http->request(header, buffer);
Weiss jemand was ich falsch mache?

Über ein Antwort würde ich mich sehr freuen!

Mfg,
Malock
Undefined
Beiträge: 34
Registriert: 19. Oktober 2006 17:12

Beitrag von Undefined »

Nicht versuchen sondern sicher sein was man macht ;)
http://www.w3.org/Protocols/rfc2616/rfc2616
Du schliesst selbst deine Connection und vor allem was ist ein ContentType ;)

Code: Alles auswählen

MyNetwork::MyNetwork(QObject *parent) : QObject(parent)
{
  QUERY_PATH = "/script.php";
  ServerName = "My.hostname.tld";
  ServerLoginName = "AnmeldeBenutzer";
  ServerKey = "AnmeldePhrase";
  // Starte Probe Verbindung und gebe Status an
  http = new QHttp( ServerName, 80, this );

  connect( http, SIGNAL( done( bool ) ), this, SLOT( DisplayAnswer( bool ) ) );
  connect( http, SIGNAL( done( bool ) ), this, SIGNAL( SignalServerDone( bool ) ) );
}

bool MyNetwork::SendPostQuery( QString &param, QString &data )
{
  QHttpRequestHeader header( type, QUERY_PATH );
  header.setValue( "Host", ServerName );
  header.setValue( "User-Agent", "Brillant/0.1" );
  header.setValue( "Accept-Charset", "utf-8" );
  header.setValue( "Content-Language", "en" );
  header.setContentType("application/x-www-form-urlencoded");

  QByteArray PostData( "My=" );
  PostData.append( ServerKey );
  PostData.append( "&" );
  PostData.append( data );
  if ( header.isValid() ) {
    http->setHost( ServerName );
    http->setUser( ServerLoginName, ServerKey );
    postSpkStatus = http->request( header, PostData, http->currentDestinationDevice() );
  }
  return header.isValid();
}

void MyNetwork::DisplayAnswer( bool b )
{
  QByteArray xml = http->readAll();
  qDebug() << Q_FUNC_INFO << b << xml;
}

void MyNetwork::ResponseHeader( const QHttpResponseHeader &resp )
{
  qDebug() << Q_FUNC_INFO << resp.reasonPhrase();
}

MyNetwork::~MyNetwork()
{
  http->close();
}
Malock
Beiträge: 2
Registriert: 14. Oktober 2008 16:18

Beitrag von Malock »

Hi,

Hat einwandfrei funktioniert! Danke!

Mfg,
Malock.
Antworten