Seite 1 von 1

(QHTTP) PostRequest funktioniert nicht richtig

Verfasst: 31. Oktober 2008 14:26
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

Verfasst: 1. November 2008 18:39
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();
}

Verfasst: 1. November 2008 20:38
von Malock
Hi,

Hat einwandfrei funktioniert! Danke!

Mfg,
Malock.