[Interest] QHttp post with headers
Reinhardt Behm
rbehm at hushmail.com
Wed Jul 13 09:37:15 CEST 2016
On Friday 20 May 2016 15:27:27 Eric Laffoon wrote:
> Hi all,
>
> It's a little emberassing but I'm still using some Qt3 software. Kommander
> is partially ported to Qt4 and I've been running my business with it since
> 2007. I'm rebuilding my biz and hope to have more time in the future. I was
> writing parser code a few years back but I'm really rusty now with C++.
>
> I need to be able to post data and I need to be able to send a custom header
> which includes the user key as a header. It's very important and it looked
> easy but I've been coding late at night several days with no joy.
>
> Can anyone recommend some Qt3 or Qt4 code that uses QHttp and associated
> network classes to post with additional header data? I've managed to get
> QHttp::post( const QString & path, const QByteArray & data, QIODevice * to =
> 0 ) to work but it looks like I need to use the request function instead.
>
> This is the post function.
>
>
> int Http::httpPost()
> {
> m_data = "";
> QString hdr;
> QString str;
> QByteArray arData;
> QHttpResponseHeader header;
>
> for (QMapConstIterator<QString, QString> it = m_headers.begin(); it !=
> m_headers.end(); it++)
> hdr += QString("%1 : %2\r\n").arg(it.key()).arg(it.data());
> hdr += ""; //"\r\n";
>
> header = QHttpRequestHeader::QHttpRequestHeader(const hdr&);
>
> for (QMapConstIterator<QString, QString> it = m_values.begin(); it !=
> m_values.end(); it++)
> str += QString("%1%2=%3").arg(it != m_values.begin() ? "&" : "")
> .arg(it.key()).arg(it.data());
>
> arData.duplicate(static_cast<const char *>(str), str.length());
> job->request(header&, arData&, 0);
>
> return 1; //not used
> }
>
> QString Http::httpShowValues()
> {
> QString str;
> for (QMapConstIterator<QString, QString> it = m_values.begin(); it !=
> m_values.end(); it++)
> {
> str += QString("%1\t%2%3") .arg(it.key()).arg(it.data()).arg(it !=
> m_values.end() ? "\n" : "");
> }
> return str;
> }
>
>
> This is my current make error
>
> ../../src/http.cpp: In member function 'int Http::httpPost()':
> ../../src/http.cpp:136:51: error: expected primary-expression before 'const'
> header = QHttpRequestHeader::QHttpRequestHeader(const hdr&);
> ^
> ../../src/http.cpp:136:61: error: cannot call constructor
> 'QHttpRequestHeader::QHttpRequestHeader' directly [-fpermissive]
> header = QHttpRequestHeader::QHttpRequestHeader(const hdr&);
> ^
> ../../src/http.cpp:136:61: error: for a function-style cast, remove the
> redundant '::QHttpRequestHeader' [-fpermissive]
>
> Yes, I know I have a constructor in there, but QHttpHeader::setValue is pure
> virtual. I can't remember how to inherit that and use it in a QHttp object.
>
> I don't really have a week to brush up on C++. Just need to see how to
> construct a request with headers and data.
>
> Thanks
>
> Eric Laffoon
Eric,
I was in the same situation some time ago. The original program was done
during Qt3.3 times and I had to port it to Qt5. Nearly all HTTP server stuff
is gone. I ended up, doing it myself. It isn't that hard.
If you give me until next week, I can extract the relevant parts (more or less
3 classes) and give it to you.
--
Reinhardt
More information about the Interest
mailing list