Название: [решено] QNetworkAccessManager POST, GET в cgi на c++ Отправлено: iks от Март 15, 2011, 23:25 Проблема не совсем стандартная или я чего-то недописал, но вопрос стоит в том что вроде все работает если отправляю короткие сообщения то нормально пишется в БД, а вот когда отправляю длинное сообщение то ни чего не принимается, а точнее говоря проходит проверки то есть прием есть на сервере, но сообщения ни какого нет, а точнее говоря записывается пустое сообщение, где проблема на клиенте отправляю вот так
Код: toSite->setStrCgi("forum", "uid=ndfy5r757858jtu577u&razdel=abc&newTema=&idTema=15&newMsg="+txtMsgEdit->toPlainText()); Код: #include "network.h" Код: int x = atoi(getenv("CONTENT_LENGTH")); Название: Re: QNetworkAccessManager POST в cgi на c++ Отправлено: SimpleSunny от Март 16, 2011, 00:00 Возьмите сниффер (wireshark к примеру) и посмотрите кто и что шлет.
Насколько помню данные в newMsg="+txtMsgEdit->toPlainText() надо будет дополнительно кодировать. Название: Re: QNetworkAccessManager POST в cgi на c++ Отправлено: ufna от Март 16, 2011, 01:24 а) есть ограничение на длину такого сообщения со стороны сервака, это надо слать по частям
б) POST запросы длинные лучше делать по-другому: http://ufna.ru/2010/10/16/qt-post-multipart-form-data Название: Re: QNetworkAccessManager POST в cgi на c++ Отправлено: iks от Март 16, 2011, 09:34 Насколько помню данные в newMsg="+txtMsgEdit->toPlainText() надо будет дополнительно кодировать. Ну на счет этого в клиенте видно что на сайт отправляется уже QByteArray на прямую запихать QString в запрос даже не получится.а) есть ограничение на длину такого сообщения со стороны сервака, это надо слать по частям А это сейчас посмотрю похоже с заголовком надо поработать, а по поводу длины вроде она на url есть и само собой сработает на GET запросах, почему и перешел на POSTб) POST запросы длинные лучше делать по-другому: http://ufna.ru/2010/10/16/qt-post-multipart-form-data Название: Re: QNetworkAccessManager POST в cgi на c++ Отправлено: ecspertiza от Март 16, 2011, 11:53 Если не ошибаюсь есть ограничения на размер данных передаваемых пост запросом, вот тут с этим боролись http://blog.alexshop.org/?p=63
А лучший вариант, это действительно взять снифер и посмотреть что куда идет и что приходит. Название: QNetworkAccessManager отправка POST, GET в cgi на c++ Отправлено: iks от Март 16, 2011, 19:23 В клиенте проблем ни каких, возникла мысль посмотреть а что приходит на сервер использовал такой скрипт
Код: strWork *workStr = new strWork; // класс проверки и удаления нежелаемых символов P.S. и даже нашел где, я при записе в БД прогонял проверку на удаление нечитаемых символов, так вот это и не успевало вернуть сообщение для добавления, сейчас перенес это в main и проверяю сразу при считывании CONTENT_LENGTH и все работает -------------------------------- Решил проблему безразрывным текстом, вставив Код: str.replace(" ", " "); ========================================================================= Отправка в клиенте идет таким образом Код: toSite = new network; class network ------------------- network.h Код: #ifndef NETWORK_H Код: #include "network.h" Принимаю на сервере вот так Код: strWork *workStr = new strWork; Class Parse тут (http://forum.ubuntu.ru/?topic=143070.0) полностью выложен удаление нежилаемых символов обсуждалось в этой теме (http://www.prog.org.ru/topic_17138_0.html) Название: Re: QNetworkAccessManager POST в cgi на c++ Отправлено: iks от Март 16, 2011, 21:08 Если не ошибаюсь есть ограничения на размер данных передаваемых пост запросом, вот тут с этим боролись http://blog.alexshop.org/?p=63 Ну там основная проблема не в том что ограничевает POST, а в том что там ножку хозяева сервера поставили, у меня как то ни когда не было этого, хост вроде платный и до этого гонял флеш а там размеры файлов шли ни такие мелкие как сейчас добавлял данным методом, но спасибо конечно. |