Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   HTTP (https://forum.antichat.xyz/showthread.php?t=191018)

Fliplab 28.03.2010 03:49

HTTP
 
Кто знает в чём может быть проблема?
Делаю запрос
Код:

GET http://loveplanet.ru/index.php?a=regcheck&f=mail&v=' + Email + ' HTTP/1.0'#13#10#13#10
. Он возвращает ошибку 400, типо запрос составлен не верно. Юзаю Винсоки. Отправляю этот запрос через shitt_http, ответ приходит нормальный. shitt_http - юзает Инди, сделалбы с ними, но терпеть их не могу.

Kaimi 28.03.2010 04:02

Поюзай снифер, почитай rfc. Где Host в заросе?

Fliplab 28.03.2010 04:12

Kaimi, такой запрос запросто жрётся так как версия HTTP 1.0. Запрос отправлял по всякому и с хостом и т.п. Никак. Кароче пох, инди так инди(((( бе

FEV 28.03.2010 04:12

Цитата:

Сообщение от Kaimi
Поюзай снифер, почитай rfc. Где Host в заросе?

Для http 1.0 заголовок host не нужен.

Возможно, проблема в том, что строковая переменная Email не в UrlEncode.

Fliplab 28.03.2010 04:15

FEV Неа, не помогло)))

FEV 28.03.2010 04:19

почему "#13#10#13#10" находятся после последнего закрывающего апострофа? где первый открывающий апостроф? короче по тому куску кода ничего не понятно.

Fliplab 28.03.2010 04:21

Данные уходят так
Цитата:

Client.Connect('loveplanet.ru', 80);
Header := 'GET http://loveplanet.ru/?a=regcheck&f=mail&v=' + Email + ' HTTP/1.0'#13#10#13#10;
Client.SendBuffer(Header, Length(Header));
Client.Idle(10);
Client.ReceiveBuffer(Rec, SizeOf(Rec));
Client - свой класс на винсоке

dmnt 28.03.2010 04:43

Цитата:

Header := 'GET http://loveplanet.ru/?a=regcheck&f=mail&v=' + Email + ' HTTP/1.0'#13#10#13#10;
В дельфи не разбираюсь, но оно точно должно так выглядеть?
А не так:
Header := 'GET http://loveplanet.ru/?a=regcheck&f=mail&v=' + Email + ' HTTP/1.0'+'#13#10#13#10';

slesh 28.03.2010 11:32

2 dmnt если не разбираешься, то лучше не пишу чушь!

Если ты шлеш запрос через HTTP прокси то всё норм. А если напрямую, то лучше сделай по нормальному. Потому что не все серваки корректно обрабатывают такие запрос.
делай типа
'GET /scrypt.ext?param='+mail+' HTTP/1.0'#13#10'Host: site.com'#13#10#13#10

Fliplab 28.03.2010 13:22

slesh не помогло, я говорю всё уже перепробывал, не пойму в чём дело

Chrome~ 28.03.2010 14:36

Может быть проблема в твоем классе? Скинь часть кода, которая отвечает за отправку данных.

RedFern.89 28.03.2010 14:42

#13 тут вовсе ни к чему. Перевод строки используй #10. т.е. каждую новую строку разделяй #10 и в конце запроса оставляй #10#10

Fliplab 28.03.2010 14:42

Нет, в нём нет проблем. Не первая прога на нём, но первая кот не пашет

RedFern.89 28.03.2010 14:56

вот тебе рабочий пример

Код:

const
  RequestLine = 'GET /index.php HTTP/1.1' + #10 +
                          'Host: vk.com' + #10 +
                          'User-Agent: Mozilla/5.0 (delphi 7)' + #10 +
                          'Connection: close' + #10#10;
  w : TClientSocket;
begin
  w := TClientSocket.Create(nil);
  w.Socket.SendText(RequestLine);
end;

у меня все работало)))

Chrome~ 28.03.2010 16:46

Цитата:

Сообщение от RedFern.89
#13 тут вовсе ни к чему. Перевод строки используй #10. т.е. каждую новую строку разделяй #10 и в конце запроса оставляй #10#10

Неправильно, это тебе скажут все, кто более менее работал с протоколом HTTP. Нужно использовать именно #13#10.

slesh 28.03.2010 18:04

2 Fliplab короче. не угукай мозги народу, а отснифайл то что посылается и выкладывай тут

Fliplab 28.03.2010 18:29

Всё норм. Решил проблему) Delphi сума сошёл просто...

RedFern.89 30.03.2010 11:00

Цитата:

Сообщение от Chrome~
Неправильно, это тебе скажут все, кто более менее работал с протоколом HTTP. Нужно использовать именно #13#10.

когда я юзал #13#10, то я вылетал с ошибкой 400 Bad Request. Может я что то не так делал. Но когда я использовал для перевода строки #10, то все работало норм)

Chrome~ 30.03.2010 14:24

Цитата:

Сообщение от RedFern.89
когда я юзал #13#10, то я вылетал с ошибкой 400 Bad Request. Может я что то не так делал. Но когда я использовал для перевода строки #10, то все работало норм)

Ну не знаю, все может быть. Только лучше такие слова подтверждать фактами.

AlexTheC0d3r 30.03.2010 14:27

Цитата:

Сообщение от RedFern.89
когда я юзал #13#10, то я вылетал с ошибкой 400 Bad Request. Может я что то не так делал. Но когда я использовал для перевода строки #10, то все работало норм)

надо не
PHP код:

#13#10 

а
PHP код:

#13+#10 


Chrome~ 30.03.2010 14:40

Цитата:

Сообщение от AlexTheC0d3r
надо не
PHP код:

#13#10 

а
PHP код:

#13+#10 


На будущее запомни. Следующие два варианты кода записывают один и тот же текст в поле Memo:
Код:

Memo.Text := 'test' + #13 + #10 + '123';
Код:

Memo.Text := 'test'#13#10'123';

AlexTheC0d3r 30.03.2010 15:21

Цитата:

Сообщение от Chrome~
На будущее запомни. Следующие два варианты кода записывают один и тот же текст в поле Memo:
Код:

Memo.Text := 'test' + #13 + #10 + '123';
Код:

Memo.Text := 'test'#13#10'123';

понял, ошибся...
просто в первый раз написал
PHP код:

#10#13 


RedFern.89 04.04.2010 02:05

Ошибка номер 400 - это и есть факт:)


Время: 19:05