Форум: "Сети";
Текущий архив: 2003.03.17;
Скачать: [xml.tar.bz2];
ВнизРабота с WinSock2 Найти похожие ветки
← →
R4D][ (2003-01-26 12:31) [0]Всем привет, я на протяжение 2х дней пытался понять, что неправельного в моем запросе. Ну не приходит ответ на этот запрос:
POST http://quickmail.ru/fcgi/send.cgi HTTP/1.0
Referer: http://quickmail.ru/fcgi/send.cgi
Host: www.quickmail.ru
Content-type: multipart/form-data
//<Пустая строка>
email1=E_F_I_M@rambler.ru&from=&email2=&file1=&file2=&file3=&file4=&subject=Test&message=GOTCHA!!!
//<Пустая строка>
P.S. Для того, чтобы отправить этот запрос, я использую WinSock2, но это не столь важно. Т.к. мне кажется, что ошибка в запросе.
P.P.S Простите, что несколько не в тему сайта...
← →
ole (2003-01-27 04:38) [1]Меня смущает тип содержимого: multipart/form-data.
В этом случае подразумевается обмен данными с сервером поблочно..
а у тебя практически обычный GET запрос, который мог вместиться в URL... Попробуй в запросе еще и размер данных указать.
← →
R4D][ (2003-01-27 14:03) [2]Дык у меня POST запрос-то...Вообще, я пытался сделать сокращенное подобие того, что я видел в логах Naviscop"a, но там фигурирует boundary.
Может тебе текст программы поможет понять мою ошибку? Я, вообще, недавно с WinSock2 связался, облазил Win32SDK и несколько сайтов о программирование на C. Оттуда я наподобие GET запроса попытался сделать POST. Может в этом моя ошибка?
В общем вот код, если найдешь ошибку, буду ооочень благодарен.
program sender;
uses
Windows,
WinSock2,
SysUtils;
const
ContentBuf = "email1=E_F_I_M@rambler.ru&from=&email2=&file1=&file2=&file3=&file4=&subject=TEST&message=";
MesBuf = "GOTCHA!!!"+#10#13;
var
AboutWS : TWSADATA;
SockAddr : TSockAddr;
SFC : TSocket;
MailBuf : PChar;
AnswerBuf: PChar;
x : Integer;
begin
WSAStartup(MakeWord(2,0),AboutWS);
SFC:=Socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if SFC=INVALID_SOCKET then MessageBox(0,"Can""t get socket :(","",mb_ok);
SockAddr.sin_family:=AF_INET;
SockAddr.sin_port:=HTons(80);
SockAddr.sin_addr.S_addr:=Inet_Addr(PChar("195.209.49.52"));
if Connect(SFC,@SockAddr,SizeOf(SockAddr))=SOCKET_ERROR then MessageBox(0,"Can""t connect :(","",mb_ok);
GetMem(MailBuf,sizeOf(MesBuf)+500);
StrCopy(MailBuf,PChar("POST /fcgi/send.cgi HTTP/1.0"+#10#13));
// StrCat(MailBuf,"Referer: http://quickmail.ru/fcgi/send.cgi"+#10#13);
StrCat(MailBuf,"Host: www.quickmail.ru"+#10#13);
StrCat(MailBuf,"Content-type: multipart/form-data"+#10#13);
StrCat(MailBuf,PChar("Content-Length: "+IntToStr(Length(ContentBuf)+Length(MesBuf)-8)));
StrCat(Mailbuf,#10#13#10#13);
StrCat(MailBuf,ContentBuf);
StrCat(MailBuf,MesBuf);
if Send(SFC,MailBuf,SizeOf(MailBuf),0)=SOCKET_ERROR then MessageBox(0,"Can""t send :(","",mb_ok);
MessageBox(0,MailBuf,"",mb_ok);
while x<>0 do
x:=Recv(SFC,AnswerBuf,SizeOf(AnswerBuf),0);
MessageBox(0,AnswerBuf,"",mb_ok);
CloseSocket(SFC);
FreeMem(MailBuf);
end.
P.S. Конечно, я забыл указать размер данных, но тут я исправил и все равно не работает
← →
Vit1251 (2003-01-27 18:53) [3]Не хватает одной важной вещи размера пакета POST:
Content-length: 17
Это пример неграмотно мной написанный! Кстати на моей ББС есть программа которая была написана используя 499 посылок пакетов POST на сервер Metrocom (нет это не хакерская программа - она просто опрашивала различные АТС там есть такая фича как обратный звонок вроде или что то типо этого где видно качество АТС-так вот что бы послать данные надо использовать POST запрос чем я и занимался!!!
← →
R4D][ (2003-01-28 15:10) [4]2Vit1251:
У меня есть Content-Length. Смотри строчку:
StrCat(MailBuf,PChar("Content-Length: "+IntToStr(Length(ContentBuf)+Length(MesBuf)-8)));
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2003.03.17;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c