Модераторы: feodorv
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Аномальное поведение POST запроса 
:(
    Опции темы
Dagger
Дата 4.2.2005, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Экс. модератор
Сообщений: 377
Регистрация: 4.9.2002
Где: Киев

Репутация: нет
Всего: 8



Странность в POST запросе. Когда объем данных небольшой - работает на "ура". Когда он побольше (4 килобайта например) - пост не обрабатывается. Не могу понять в чем дело. Кто знает - проглядите что не так, скажите пожалуйста.

Функция, которая формирует заголовки и тело:
Код


int PostRequest(char *&header, char *&body, char *host, char *path, char *query, char *data){
char tmp[30];

header = (char *)malloc(2048 + strlen(host) + strlen(path) + strlen(query));
body = (char *)malloc(strlen(data) + 3);
memset(header, '\0', 2048 + strlen(host) + strlen(path) + strlen(query));
memset(body, '\0', strlen(data) + 3);

strcpy(header, "");
strcat(header, "POST /");

if(path){

 strcat(header, path);
}

if(query){
 strcat(header, "?");
 strcat(header, query);
}

strcat(header, " HTTP/1.0\r\n");
strcat(str, "User-Agent: Mozilla/4.51 [en] (X11; I; SunOS 5.6 sun4m)\n");
strcat(header, "Host: ");
strcat(header, host);
strcat(header, "\r\n");
strcat(header, "Content-Type: application/x-www-form-urlencoded\r\n");
strcat(header, "Content-Length: ");


if(data){
 sprintf(tmp, "%d\r\n\r\n", (int)strlen(data));
 strcat(header, tmp);
 strcat(body, data);
 strcat(body, "\r\n\r\n");
 //strcat(str, "");
}else{
 strcat(header, "0\r\n\r\n");
 strcpy(body, "");
}


return 1;
}


функция URL_ENCODE
Код

char *url_encode(char *str)
{
unsigned char hex[] = "0123456789ABCDEF";
register int i, j, len, tmp_len;
unsigned char *tmp;

len = strlen(str);
tmp_len = len;
tmp = (unsigned char*)malloc(len+1);
if (tmp == NULL)
 return NULL;

for (i = 0, j = 0; i < len; i++, j++) {
 tmp[j] = (unsigned char)str[i];
 if (tmp[j] == ' ')
  tmp[j] = '+';
 else if (!isalnum(tmp[j]) && strchr("_-.", tmp[j]) == NULL) {
  tmp_len += 3;
  tmp = realloc(tmp, tmp_len);
  if (!tmp)
   return NULL;

  tmp[j++] = '%';
  tmp[j++] = hex[(unsigned char)str[i] >> 4];
  tmp[j] = hex[(unsigned char)str[i] & 0x0F];
 }
}

tmp[j] = '\0';

return tmp;
}


PM MAIL WWW Skype   Вверх
knave
Дата 8.2.2005, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 320
Регистрация: 6.3.2003
Где: Санкт-Питербург ( Россия)

Репутация: 1
Всего: 5



Что именно не обрабатывается? Проверь может у тбя не все на сервре отправляется.


--------------------
С наилучшими пожеланиями !!!
PM MAIL ICQ   Вверх
Dagger
Дата 9.2.2005, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Экс. модератор
Сообщений: 377
Регистрация: 4.9.2002
Где: Киев

Репутация: нет
Всего: 8



Вот как я его отправляю:
Код

cnt = send(s, request, strlen(request), 0);


А вот сам запрос, который не проходит:
Код

POST /clnt/sbs.php?step2 HTTP/1.0
Host: www.xxx.ua
Content-Type: application/x-www-form-urlencoded
Content-Length: 4961

nbody=%CB%E8%E1%F0%E0%F0%E8%E9+%AB%D2%EE%EF%BB%3A+%FF%ED%E2%E0%F0%FC+2005%2B%3D%2B+%2B%3D%2Bhttp%3A%2F%2Fproza.com.ua%2Farticle%2F1013%2F%2B%3D%2B6%7B%2B%2B%7D%C2%FB%F8%EB%E8+%E2+%F1%E2%E5%F2+%E4%E2%E0+%F2%EE%EC%E0+%FD%F1%F1%E5%E8%F1%F2%E8%EA%E8+%EA%EB%E0%F1%F1%E8%EA%E0+%ED%E0%F3%F7%ED%EE%E9+%F4%E0%ED%F2%E0%F1%F2%E8%EA%E8+%D1%F2%E0%ED%E8%F1%EB%E0%E2%E0+%CB%E5%EC%E0%3A+%C4%E8%E0%EB%EE%E3%E8%2B%3D%2B+%2B%3D%2Bhttp%3A%2F%2Fproza.com.ua%2Farticle%2F1012%2F%2B%3D%2B6%7B%2B%2B%7D%CD%E8%EA%EE%EB%E0%E9+%CA%D0%C0%C2%D7%C5%CD%CA%CE%3A+%AB...%ED%E0%F1%F2%E0%EB%EE+%E2%F0%E5%EC%FF+%E2%E5%F0%ED%F3%F2%FC+%D3%EA%F0%E0%E8%ED%E5+%F3%EA%F0%E0%E8%ED%F1%EA%F3%FE+%EA%ED%E8%E3%F3%21%BB%2B%3D%2B%AB...%ED%E0%F1%F2%E0%EB%EE+%E2%F0%E5%EC%FF%2C+%EA%EE%E3%E4%E0+%ED%E0%F8%E8+%EF%EE%F2%F3%E3%E8+%ED%E0+%EA%ED%E8%E6%ED%EE%E9+%ED%E8%E2%E5+%EC%EE%E3%F3%F2+%ED%E0%E9%F2%E8+%EE%F2%EA%EB%E8%EA+%E2%EE+%E2%EB%E0%F1%F2%ED%FB%F5+%EA%E0%E1%E8%ED%E5%F2%E0%F5%2C+%E0+%EE%E1%F9%E8%E9+%EF%EE%E4%FA%E5%EC+%ED%E0%F6%E8%EE%ED%E0%EB%FC%ED%EE%E3%EE+%E4%F3%F5%E0+%EC%EE%E6%ED%EE+%E8%F1%EF%EE%EB%FC%E7%EE%E2%E0%F2%FC+%E4%EB%FF+%F0%E5%F8%E5%ED%E8%FF+%E3%EB%E0%E2%ED%EE%E3%EE+%E7%E0%E4%E0%ED%E8%FF+%FD%F2%EE%E3%EE+%E3%EE%E4%E0+%E4%EB%FF+%EA%ED%E8%E3%EE%E8%E7%E4%E0%F2%E5%EB%E5%E9+-+%E2%E5%F0%ED%F3%F2%FC+%D3%EA%F0%E0%E8%ED%E5+%F3%EA%F0%E0%E8%ED%F1%EA%F3%FE+%EA%ED%E8%E3%F3...%BB%2B%3D%2Bhttp%3A%2F%2Fproza.com.ua%2Farticle%2F1011%2F%2B%3D%2Bmnenie%7B%2B%2B%7D%D4%F3%F2%F3%F0%E8%F1%F2%E8%F7%E5%F1%EA%E0%FF+%C5%F8%EA%E8%EB%E5%E2%E8%E0%E4%E0%2B%3D%2B%C2%EB%E0%E4%E8%EC%E8%F0+%C5%D8%CA%C8%CB%C5%C2%3A+%AB%D7%F2%EE%E1%FB+%F3%EA%F0%E0%E8%ED%F1%EA%E8%E5+%F2%F3%F1%EE%E2%EA%E8+%EC%EE%E3%EB%E8+%E7%E0%ED%E8%EC%E0%F2%FC%F1%FF+%EB%E8%F2%E5%F0%E0%F2%F3%F0%EE%E9%2C+%E8%EC+%ED%F3%E6%ED%EE+%F5%EE%F0%EE%F8%EE+%EF%F0%EE%E5%E1%E0%F2%FC%F1%FF.+%C2%F1%B8+%ED%E0%F7%E8%ED%E0%E5%F2%F1%FF+%F1+%E1%EE%EB%FC%F8%EE%E3%EE+%F2%EE%EB%F1%F2%EE%E3%EE+%F7%EB%E5%ED%E0%2C+%E8+%E5%F1%EB%E8+%E5%E3%EE+%ED%E5%F2%2C+%EB%FE%E1%EE%E9+%F2%E5%EA%F1%F2+%96+%FD%F2%EE+%EA%EE%EC%EC%E5%ED%F2%E8%F0%EE%E2%E0%ED%E8%E5+%F1%EE%E1%F1%F2%E2%E5%ED%ED%EE%E9+%E8%EC%EF%EE%F2%E5%ED%F6%E8%E8%85%BB+%2B%3D%2Bhttp%3A%2F%2Fproza.com.ua%2Farticle%2F1010%2F%2B%3D%2B3%7B%2B%2B%7D%CF%FF%F2%E8%E4%ED%E5%E2%ED%FB%E9+%EF%EE%FD%F2%E8%F7%E5%F1%EA%E8%E9+%EC%E0%F0%E0%F4%EE%ED%2C+%EF%F0%EE%E2%E5%E4%E5%ED%ED%FB%E9+%ED%E0+%D3%F0%E0%EB%E5%2C+%EF%EE%EF%E0%EB+%E2+%EA%ED%E8%E3%F3+%F0%E5%EA%EE%F0%E4%EE%E2+%C3%E8%ED%ED%E5%F1%E0%2B%3D%2B+%2B%3D%2Bhttp%3A%2F%2Fproza.com.ua%2Farticle%2F1009%2F%2B%3D%2B6%7B%2B%2B%7D%CA%ED%E8%E6%ED%FB%E5+%EC%E0%E3%E0%E7%E8%ED%FB+%F2%F0%E5%E1%F3%FE%F2+%F1%EF%E8%F1%EE%EA+%AB%E7%E0%EF%F0%E5%F2%ED%EE%E9%BB+%EB%E8%F2%E5%F0%E0%F2%F3%F0%FB%2B%3D%2B++%2B%3D%2Bhttp%3A%2F%2Fproza.com.ua%2Farticle%2F1008%2F%2B%3D%2B6%7B%2B%2B%7D%C2%FB%F8%EB%E0+%FD%EA%F0%E0%ED%E8%E7%E0%F6%E8%FF+%EA%ED%E8%E3+%DD%E4%F3%E0%F0%E4%E0+%CB%E8%EC%EE%ED%EE%E2%E0%2B%3D%2B++%2B%3D%2Bhttp%3A%2F%2Fproza.com.ua%2Farticle%2F1007%2F%2B%3D%2B6%7B%2B%2B%7D%CA%ED%E8%E3%E8%2C+%EF%F0%EE%EF%E0%E3%E0%ED%E4%E8%F0%F3%FE%F9%E8%E5+%ED%E0%F0%EA%EE%F2%E8%EA%E8%2C+%E1%F3%E4%F3%F2+%E8%E7%FB%EC%E0%F2%FC%F1%FF+%F1+%EF%F0%EE%E4%E0%E6%E8+%EF%EE+%F0%E5%F8%E5%ED%E8%FE+%F1%F3%E4%E0%2B%3D%2B+%2B%3D%2Bhttp%3A%2F%2Fproza.com.ua%2Farticle%2F1006%2F%2B%3D%2B6%7B%2B%2B%7D%C8%E7%E4%E0%ED%E0+%EA%ED%E8%E3%E0+%E1%FB%E2%F8%E5%E9+%E6%E5%ED%FB+%CC%E0%F0%EB%EE%ED%E0+%C1%F0%E0%ED%E4%EE%2B%3D%2B+%2B%3D%2Bhttp%3A%2F%2Fproza.com.ua%2Farticle%2F1005%2F%2B%3D%2B6%7B%2B%2B%7D100+%EB%E5%F2+%F1%EE+%E4%ED%FF+%F0%EE%E6%E4%E5%ED%E8%FF+%EF%E8%F1%E0%F2%E5%EB%FC%ED%E8%F6%FB+%DD%E9%ED+%D0%FD%ED%E4%2B%3D%2B+%2B%3D%2Bhttp%3A%2F%2Fproza.com.ua%2Farticle%2F1004%2F%2B%3D%2B6%7B%2B%2B%7DAndruxo%BFd%3A+%EC%E5%F1%F2%EE+%E8+%E2%F0%E5%EC%FF+%EF%F0%E8%E7%E5%EC%EB%E5%ED%E8%FF%2B%3D%2B+%2B%3D%2Bhttp%3A%2F%2Fproza.com.ua%2Farticle%2F1003%2F%2B%3D%2B6%7B%2B%2B%7D%CF%E8%F1%E0%F2%E5%EB%FC+%D1%E5%F0%E3%E5%E9+%C6%E0%E4%E0%ED+%F3%F7%E0%F1%F2%E2%F3%E5%F2+%E2+%EF%EE%F1%F2%E0%ED%EE%E2%EA%E5+%E3%E0%ED%E3%F1%F2%E5%F0%F1%EA%EE%E3%EE+%F2%F0%E8%EB%EB%E5%F0%E0%2B%3D%2B+%2B%3D%2Bhttp%3A%2F%2Fproza.com.ua%2Farticle%2F1002%2F%2B%3D%2B6%7B%2B%2B%7D%CE%E1%FA%E5%E4%E8%ED%E5%ED%E8%E5+%EA%EE%ED%F2%F0-%EA%F3%EB%FC%F2%F3%F0%ED%FB%F5+%EF%E8%F1%E0%F2%E5%EB%E5%E9+%AB%CF%E0%E4%EE%ED%EA%E8.%EE%F0%E3%BB+%EF%F0%E5%E4%F1%F2%E0%E2%EB%FF%E5%F2+%E4%EE%EB%E3%EE%E6%E4%E0%ED%ED%F3%FE+%AB%C9%CE%CF%C0%D2%C8-2%BB%2B%3D%2B++%2B%3D%2Bhttp%3A%2F%2Fproza.com.ua%2Farticle%2F1001%2F%2B%3D%2B6%7B%2B%2B%7D%C2%FB%F8%E5%EB+%F0%EE%EC%E0%ED+%CB%E8%ED%EE%F0+%C3%EE%F0%E0%EB%E8%EA+%E8+%D1%F2%E0%ED%E8%F1%EB%E0%E2%E0+%CB%FC%E2%EE%E2%F1%EA%EE%E3%EE+%AB%CF%EE%EB%EE%E2%E8%ED%E0+%ED%E5%E1%E0%BB%2B%3D%2B+%2B%3D%2Bhttp%3A%2F%2Fproza.com.ua%2Farticle%2F1000%2F%2B%3D%2B6%7B%2B%2B%7D%CB%E8%F2%E5%F0%E0%F2%F3%F0%ED%EE-%EC%F3%E7%FB%EA%E0%EB%FC%ED%FB%E9+Andruxo%BFd%2B%3D%2B+%2B%3D%2Bhttp%3A%2F%2Fproza.com.ua%2Farticle%2F999%2F%2B%3D%2B6%7B%2B%2B%7D%22%2B-3%7D%29%7D%EB%E8%F7%ED%EE%F1%F2%E8%7B%21%7D6%7D%29%7D%ED%EE%E2%EE%F1%F2%E8%7B%21%7Dmnenie%7D%29%7D%EC%ED%E5%ED%E8%E5%7B%21%7D

PM MAIL WWW Skype   Вверх
knave
Дата 6.4.2005, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 320
Регистрация: 6.3.2003
Где: Санкт-Питербург ( Россия)

Репутация: 1
Всего: 5



Попробуй проверить сколько реально отправила функция SEND и сколко получила RECV.

Есть очень большая вероятность что у тебя очередной пакет затер на клиенте предыдущий. При длинне отправляемых данных 4961 это может произойти. TCP гарантирует доставку. А вот то, что твой блок данных, не будет затерт в сокете новыми блоками данных, тебе никто не гарантирует. Можно поираться с настройками сокетов setsockop/getsockop. Либо слать частями. Детали отправки частями надо смотреть в RFC на HTTP (multipartformdata - как то так пишется в формах наприер которые файлы грузят на север)

Для теста можеш сам написать себе клиент-сервер и слать большие блоки данных - стопудово блоки больше 2-3 килобайт начнут глючить на клиенте. Есть еще ограничение на размер входного буфера в сокетах. Cамый верный вариант слать в несколько проходов.


--------------------
С наилучшими пожеланиями !!!
PM MAIL ICQ   Вверх
Dagger
Дата 6.4.2005, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Экс. модератор
Сообщений: 377
Регистрация: 4.9.2002
Где: Киев

Репутация: нет
Всего: 8



knave, спасибо, понял.
Как бы это не помогало, я слал даже по 128 байт (я писал сразу два варианта функции отправки - полностью весь запрос и частями, размер которых задается) - так вот, та же история. Есть подозрение, что это функции winsock выпендриваются на отправку (что-то подобное я слышал много раз), пока нет времени этим заниматься плотно, но, думаю, вскоре напишу что получилось. ВозможнО, проблема еще в компиляторе моем (lcc-win32) и особенностями его работы.
PM MAIL WWW Skype   Вверх
knave
Дата 7.4.2005, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 320
Регистрация: 6.3.2003
Где: Санкт-Питербург ( Россия)

Репутация: 1
Всего: 5



Ааааа, у тебя еще и экзотика какая то smile)) А что за зверь такой lcc-win32 ???


--------------------
С наилучшими пожеланиями !!!
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0451 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.