Название: Автоматическое преобразование %2B в %252B Отправлено: thechicho от Июнь 11, 2013, 15:51 нужно выполнить запрос на
http://www.blabla.ru/?blabla%2Bblabla задаю так request.setUrl(QUrl("http://www.blabla.ru/?blabla%2Bblabla")); по сниферу видно, что %2B автоматически кодируется в %252B вопрос: где происходит это кодирование и возможно ли его оключить? или %2B - это символ + если задать урл http://www.blabla.ru/?blabla+blabla то ничего не кодируется, а так и передается. хотя в данном случае мне нужно, чтобы прошло кодирование + в %2B Название: Re: Автоматическое преобразование %2B в %252B Отправлено: mutineer от Июнь 11, 2013, 15:54 QUrl::toPercentEncoding подойдет?
Название: Re: Автоматическое преобразование %2B в %252B Отправлено: thechicho от Июнь 11, 2013, 16:03 вот похожая проблема
http://www.qtcentre.org/threads/54183-QNetworkAccessManager-strange-problem-and-behavior только мне нужно, чтобы именно %2B отправлялось в итоговом запросе //QUrl::toPercentEncoding нет, это QNetworkAccessManager как-то автоматически кодирует %2B в %252B что нужно отключить, либо включить кодирование + в %2B Название: Re: Автоматическое преобразование %2B в %252B Отправлено: kambala от Июнь 11, 2013, 16:58 request.setUrl(QUrl::toPercentEncoding("http://www.blabla.ru/?blabla+blabla"));
Название: Re: Автоматическое преобразование %2B в %252B Отправлено: thechicho от Июнь 11, 2013, 17:13 QByteArray QUrl::toPercentEncoding ( const QString & input, const QByteArray & exclude = QByteArray(), const QByteArray & include = QByteArray() ) [static]
void QNetworkRequest::setUrl ( const QUrl & url ) но это неважно. важно то, что % автоматически кодируется в %25 и из %2B получается %252B это на уровне исходников происходит? (типа баг) или все-таки как-то можно повлиять на это преобразование? Название: Re: Автоматическое преобразование %2B в %252B Отправлено: Serr500 от Июнь 11, 2013, 19:07 Вставьте вместо "%2B" символ "+" и передайте строку в QUrl.
Название: Re: Автоматическое преобразование %2B в %252B Отправлено: thechicho от Июнь 11, 2013, 19:13 Цитировать если задать урл http://www.blabla.ru/?blabla+blabla то ничего не кодируется, а так и передается. хотя в данном случае мне нужно, чтобы прошло кодирование + в %2B Название: Re: Автоматическое преобразование %2B в %252B Отправлено: thechicho от Июнь 11, 2013, 19:17 http://lists.qt.nokia.com/public/qt-interest/2008-December/000569.html
Название: Re: Автоматическое преобразование %2B в %252B Отправлено: thechicho от Июнь 11, 2013, 22:48 в общем в 4 Qt баг с QUrl.
в чем именно он заключается я хз, но если делать так QString urlString = "http://www.blabla.ru/?blabla+blabla"; request.setUrl(QUrl(urlString)); то сервер сообщает об ошибке если так request.setUrl(QUrl::fromEncoded(urlString.replace("+", "%2B").toUtf8())); то сервер отдает нужный контент. помог разобраться thiago с irq FreeNode, Europe канал #qt (походу этот чувак https://www.google.ru/search?q=Thiago+Macieira) посоветовал переходить на qt5, мол там QUrl без багов и работает быстрее) заходите тоже, можно будет на русском поообщаться) http://qt-project.org/wiki/OnlineCommunities можно через оперу зайти irc: ищите FreeNode, Europe комнату qt Название: Re: Автоматическое преобразование %2B в %252B Отправлено: thechicho от Июнь 12, 2013, 14:32 может кому интересно будет
Код: QString urlString = "http://www.blabla.ru/?blabla%2Bblabla"; urlTest1 QUrl( "http://www.blabla.ru/?blabla%2Bblabla" ) urlTest1.toEncoded() "http://www.blabla.ru/?blabla%252Bblabla" urlTest2 QUrl( "http://www.blabla.ru/?blabla+blabla" ) urlTest2.toEncoded() "http://www.blabla.ru/?blabla%2Bblabla" |