[Solved]Problem Downloading a file
-
as stated earlier, your URL should be percent-encoded. I don't see the .toPercentEncoding() method used, even though you said you used it.
@
iNetReply = iNetManager->get(QNetworkRequest(QUrl("http://myStore-dev.myCompany.com/lmn/00000/fetch?device=00000&file=myFile+.zip")));
@should be
@
iNetReply = iNetManager->get(QNetworkRequest(QUrl("http://myStore-dev.myCompany.com/lmn/00000/fetch?device=00000&file=myFile+.zip").toPercentEncoding()));
@ -
[quote]My url already have %_2_B instead of +, but server when i perform get answer: ContentNotFoundError, but if i put the same url into firefox I’m able to download right file.[/quote]
Can you use wireshark or a similar tool to analyze the HTTP traffic and understand what's going on?
[quote author="Eus" date="1314173671"]as stated earlier, your URL should be percent-encoded. I don't see the .toPercentEncoding() method used, even though you said you used it.
@
iNetReply = iNetManager->get(QNetworkRequest(QUrl("http://myStore-dev.myCompany.com/lmn/00000/fetch?device=00000&file=myFile+.zip")));
@should be
@
iNetReply = iNetManager->get(QNetworkRequest(QUrl("http://myStore-dev.myCompany.com/lmn/00000/fetch?device=00000&file=myFile+.zip").toPercentEncoding()));@
[/quote]This is completely nonsense. Not only that doesn't compile, but there's no QNetworkRequest(QByteArray) ctor, and you don't want to percent encode that url (thus escaping :, /, ?, &, etc.).
-
yeah, my bad, just noticed that too. And I haven't tried to compile it, it was using his code as starting point. He could percent encode the name only.....
-
[quote author="peppe" date="1314174967"]
This is completely nonsense. Not only that doesn't compile, but there's no QNetworkRequest(QByteArray) ctor
[/quote]The compiler will call the non-explicit QString(QByteArray) constructor for this, unless QT_NO_CAST_FROM_ASCII is defined.
-
[quote author="Volker" date="1314177476"]
[quote author="peppe" date="1314174967"]
This is completely nonsense. Not only that doesn't compile, but there's no QNetworkRequest(QByteArray) ctor
[/quote]The compiler will call the non-explicit QString(QByteArray) constructor for this, unless QT_NO_CAST_FROM_ASCII is defined.
[/quote]Nope -- QNetwokRequest wants a QUrl. There are two conversions to be made (QByteArray -> QString -> QUrl), and C++ forbids that (not to mention the fact that you can disable either of them with macros).
-
Then what should i do?
-
Constructing a valid QUrl to pass to QNetworkRequest sounds like a reasonable path to walk...
-
It's what I'm trying to do...
-
[quote author="qwertyuiopearendil" date="1314180408"]Then what should i do?[/quote]
As I said, dump HTTP headers and inspect them.
-
[quote author="peppe" date="1314177763"]
Nope -- QNetwokRequest wants a QUrl. There are two conversions to be made (QByteArray -> QString -> QUrl), and C++ forbids that (not to mention the fact that you can disable either of them with macros).
[/quote]Eek, you're right. I mixed up the parentheses. I need to do more LISP to get used to that ;-)
-
You might want to read the documentation for QUrl::fromUserInput then. It contains some more info on how to deal with string encodings and the likes.
-
Solved!!!
Below the solution about my problem:@
QString strUrl="http://myStore-dev.com/zip/mioFile%2_B.zip";QByteArray baUrl(strUrl.toAscii().data());
QUrl tmpUrl1;
tmpUrl1.setEncodedUrl(baUrl);
iNetReply = iNetManager->get(QNetworkRequest(tmpUrl1));
@Thanks to all.
Bye bye.
-
Please be sure and add [Solved] to the beginning of the thread title. Thanks!