Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.09.2015, 06:24   #1
lollollollol
Форумчанин
 
Регистрация: 23.03.2013
Сообщений: 218
По умолчанию

Здравствуйте, прошу помощи!


Вторые сутки проходят, а я никак не могу победить синапсовский httpsend.

Работаю с ним года 3, и никогда небыло такой проблемы!

Компилятор delphi 2010.


Суть проблемы:
В программе делается два запроса

Код:
  HTTP:=THTTPSend.Create;
  HTTP.MimeType := 'application/x-www-form-urlencoded';
  HTTP.UserAgent:='Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US)';
  //http.KeepAlive:=False;
  HTTP.Document.Write(PAnsiChar(Send)^, Length(Send));
  HTTP.HTTPMethod('POST',SERVER);
   R:=TstringList.Create;
 R.LoadFromStream(HTTP.Document);
  HTTP.Free;


...

  HTTP1:=THTTPSend.Create;
  // http1.KeepAlive:=False;
   HTTP1.HTTPMethod('GET',SERVER2);
HTTP1.Free;

И по сниферу видно что запросы идут в один сокет.

Цитата:
POST /server.php HTTP/1.0
Host: myserver1.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US)
Content-Type: application/x-www-form-urlencoded
Content-Length: 22

1=44444444444444555558GET /server.php HTTP/1.0
Host: myserver2.ru
User-Agent: Mozilla/4.0 (compatible; Synapse)
Как такое может быть?
Получается синапс отправляет в старый сокет запрос?

Но ведь я переменную HTTP уничтожаю, а новая создаётся вообще в другой функции.


Кто сталкивался, или у кого какие мысли по попводу проблемы?


Спасибо

Получается что второй запрос не создаёт новый сокет, а тупо кидает данные в старый. При этом обратите внимание, и переменные, и сервера куда должен идти пакет РАЗНЫЕ.

Добавил
Код:
  shutdown(http.Sock.Socket,2);
  http.Sock.CloseSocket;
По фаеру видно что на второй сервер даже не создаётся новый запрос. Данные на старый уходят.

Как такое может быть непонимаю

Последний раз редактировалось Stilet; 03.09.2015 в 08:24.
lollollollol вне форума Ответить с цитированием
Старый 03.09.2015, 08:26   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Забавно... А сам вызов HTTPMethod он асинхронный? Ты не проверял?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.09.2015, 08:40   #3
lollollollol
Форумчанин
 
Регистрация: 23.03.2013
Сообщений: 218
По умолчанию

Как это проверить?


Могу добавить что 2 эти запроса выполняются с интервалом в пять секунд.
Происходит это так(по фаеру наблюдения)

Отправляется первый запрос
Приходит ответ
Интервал 5 сек
Данные от второго запроса отправляются в сокет ПЕРВОГО
Выполняется Коннект на второй сервер, но уда ничего не отправляется!


Я такого никогда не видел, вынос мозга///


Получается что гдето в памяти держится старый сокет, открытым. Да вообще бред.
Уже простой работы на двое уток из-за этого

Проблема решена!


Если у кого-то будет такая же проблема как у меня, запомните!


НЕЛЬЗЯ ЧТОБЫ В ПЕРЕМЕННОЙ С ДОМЕНОМ В КОНЦЕ БЫЛ ПРОБЕЛ(если передаётся хотябы одна GET переменная)!!!!

Решение: Добавил trim(server) !



Если честно это ужас, я думал такая мелочь не может принести столько проблем

Последний раз редактировалось Stilet; 03.09.2015 в 09:59.
lollollollol вне форума Ответить с цитированием
Старый 03.09.2015, 10:05   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Хм... Любопытно. Хорошо что я работаю с сокетами беркли, там таких проблем не припомню...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.09.2015, 10:44   #5
lollollollol
Форумчанин
 
Регистрация: 23.03.2013
Сообщений: 218
По умолчанию

сокеты беркли, эт обычные сокеты, или я путаю?

Где почитать?


Я раньше делал софт на WinSock, но тут подумал что и синапса хватит, подумал что с ним проще будет, нужно то пару запросов.
lollollollol вне форума Ответить с цитированием
Старый 03.09.2015, 11:36   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
сокеты беркли, эт обычные сокеты, или я путаю?
Они, родимые.
Цитата:
Где почитать?
М.м.м... правильный вопрос. Ну например тут: http://www.delphikingdom.com/asp/vie...catalogid=1021
Вот пример того, что я делал для себя: http://www.programmersforum.ru/showthread.php?t=251517
Модуль там же.
Правда там по-моему только сервер описан, но есть примеры подачи в сокет данных.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.09.2015, 11:58   #7
lollollollol
Форумчанин
 
Регистрация: 23.03.2013
Сообщений: 218
По умолчанию

Цитата:
Они, родимые.
Ну тогда я про них всё знаю)))
Протокол сокс реализовывал по описанию и ещё парочку других, так, ради тренировки
lollollollol вне форума Ответить с цитированием
Старый 03.09.2015, 12:20   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Они, родимые.

М.м.м... правильный вопрос. Ну например тут: http://www.delphikingdom.com/asp/vie...catalogid=1021
Вот пример того, что я делал для себя: http://www.programmersforum.ru/showthread.php?t=251517
Модуль там же.
Правда там по-моему только сервер описан, но есть примеры подачи в сокет данных.
так это ж выходит WinSock 1 по сути?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 03.09.2015, 12:56   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
так это ж выходит WinSock 1 по сути?
Ну да. Он самый. А что?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Synapse + Instagram API. Не уходят GET/POST-запросы olegstepp Работа с сетью в Delphi 2 20.11.2014 19:57
Synapse. HTTPSend Nugrom Общие вопросы Delphi 7 22.09.2014 22:19
Запросы и запросы с помощью QBE LollyMarry Microsoft Office Access 0 02.03.2014 01:14
Запросы API сайта, Delphi библиотека Synapse uralgsm Помощь студентам 1 06.01.2014 01:08
[Ошибка]cannot resolve unit name 'httpsend' at line qwizz Общие вопросы Delphi 2 15.04.2013 08:30