Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


Ответ
 
Опции темы
Старый 18.09.2012, 16:04   #1
Smagulov85
Форумчанин
 
Аватар для Smagulov85
 
Регистрация: 22.11.2009
Сообщений: 142
По умолчанию при отправки post получаю socket error 10054

всем привет!! делаю post запрос через idhttp1 (Delphi XE2 indy 10.5.8.0)

Код:

IdHTTP1.Post('сайт',LoginInfo,Response);
debuger выдает ошибку этой строке, как избавиться не понимаю
socket error 10054 connection reset by peer
Smagulov85 вне форума Ответить с цитированием
Старый 18.09.2012, 16:30   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,455
По умолчанию

сервер режет соединение с вами, а не вы с ним. Может не так подключились может данные не те. В любом случае проблема у вас.
Человек_Борща вне форума Ответить с цитированием
Старый 18.09.2012, 16:34   #3
Smagulov85
Форумчанин
 
Аватар для Smagulov85
 
Регистрация: 22.11.2009
Сообщений: 142
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
сервер режет соединение с вами, а не вы с ним. Может не так подключились может данные не те. В любом случае проблема у вас.

побывал на win xp delphi xe3 через прокси. все работает и парсит нормально получаю данные. а на win 7 delphi xe2 без прокси выдает ошибку
Smagulov85 вне форума Ответить с цитированием
Старый 19.09.2012, 01:03   #4
Smagulov85
Форумчанин
 
Аватар для Smagulov85
 
Регистрация: 22.11.2009
Сообщений: 142
По умолчанию

Ошибку нашел!! но теперь в место ответа post получаю такой символ

Цитата:

код проги такой


Цитата:
var
Form1: TForm1;
Http : TidHttp;
CM : TidCookieManager;
Data : TStringList;
StrPage, UserID, UserName, s, str, s1, SId, SId_asp, ss, co, co_asp, asp_ss,uid_ss, co_uid, uid : String;
i : integer;
Response: TStringStream;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
try
idHTTP1.Get('http://www.russianpost.ru/rp/servise/ru/home/postuslug/trackingpo');
IdHTTP1.Response.RawHeaders.Extract ('Set-Cookie', Memo1.Lines);//получаем куки
s:=Memo1.Text;
// копируем куки
Sid:='SessionId=';

if Pos(SId, s)=0 then begin
messagedlg('Ошибка: Невозможно проверить обновление! Проверьте подключение к интернету.' ,mtError, [mbOK],0)
end else begin
ss:=copy(s,pos('=',s)+1,length(s));
co:=copy(ss,0,pos('; path=/',ss)-1);
Edit1.Text:=co;
end;
SId_asp:='ASP.NET_SessionId';
if Pos(SId_asp, s)=0 then begin
messagedlg('Ошибка: Невозможно проверить обновление! Проверьте подключение к интернету.' ,mtError, [mbOK],0)
end else begin
asp_ss:=copy(s,pos('_SessionId=',s) +11,length(s)); //
co_asp:=copy(asp_ss,0,pos('; path=/; HttpOnly',asp_ss)-1);
Edit2.Text:=co_asp;
end;
uid:='HttpOnly';
if Pos(uid, s)=0 then begin
messagedlg('Ошибка: Невозможно проверить обновление! Проверьте подключение к интернету.' ,mtError, [mbOK],0)
end else begin
uid_ss:=copy(s,pos('uid=',s)+4,leng th(s)); //
co_uid:=copy(uid_ss,0,pos('; expires',uid_ss)-1);
Edit3.Text:=co_uid;
end;

Http := TIdHTTP.Create;
Data := TStringList.Create;
Response := TStringStream.Create;
Http.AllowCookies := true;
Http.HandleRedirects := true;
HTTP.Request.Accept:='text/html, application/xhtml+xml, */*';
HTTP.Request.Referer:='http://www.russianpost.ru/rp/servise/ru/home/postuslug/trackingpo';
HTTP.Request.AcceptLanguage:='ru-RU';
HTTP.Request.UserAgent:='Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)';
HTTP.Request.ContentType:='applicat ion/x-www-form-urlencoded';
HTTP.Request.AcceptEncoding:='gzip, deflate';
HTTP.Request.Host:='www.russianpost .ru';
HTTP.Request.ContentLength:=325;
HTTP.Request.CustomHeaders.Text:='C ookie: SessionId='+Edit1.Text+';ASP.NET_Se ssionId='+Edit2.Text+';uid='+Edit3. Text;
HTTP.Request.Connection:='Keep-Alive';
HTTP.Request.CacheControl:='no-cache';
Data.Add('OP=');
Data.Add('PATHCUR=rp/servise/ru/home/postuslug/trackingpo');
Data.Add('PATHFROM=');
Data.Add('WHEREONOK=');
Data.Add('ASP=');
Data.Add('PARENTID=');
Data.Add('FORUMID=');
Data.Add('NEWSID=');
Data.Add('DFROM=');
Data.Add('DTO=');
Data.Add('CA=');
Data.Add('CDAY=18');// это число меняется я пока меняю его в ручную
Data.Add('CMONTH=09');// это число меняется я пока меняю его в ручную
Data.Add('CYEAR=2012');// это число меняется я пока меняю его в ручную
Data.Add('NAVCURPAGE=');
Data.Add('SEARCHTEXT=');
Data.Add('searchAdd=');
Data.Add('PATHWEB=RP/INDEX/RU/Home');
Data.Add('PATHPAGE=RP/INDEX/RU/Home/Search');
Data.Add('search1=');
Data.Add('BarCode=19112254797938');
Data.Add('searchsign=1');
Data.Add('entryBarCode=');
Http.Post('http://www.russianpost.ru/resp_engine.aspx?Path=rp/servise/ru/home/postuslug/trackingpo', Data, Response);
memo2.Text:= UTF8Encode(Response.DataString);
//Memo2.Lines.Text := idHttp1.Response.RawHeaders.GetText ;
finally
Response.Free;
Data.Free;
Http.Free;
end;
end;
суть программы должно парсить отслеживание посылки на сайте Почта россии

для проверки 19112254797938 - рабочий

скрины снифера

http://f1.s.qip.ru/gKJ8LlDb.jpg

http://f1.s.qip.ru/gKJ8LlDc.jpg


P.s знаю код ужасный, не надо критики.... пишу как могу

Последний раз редактировалось Smagulov85; 19.09.2012 в 01:06.
Smagulov85 вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Восстановить подключение после socket error 10054 connection reset by peer ZBEP Работа с сетью в Delphi 3 11.06.2013 18:24
Функция при опросе ip компьютера по snmp выдает ошибку debugger Exception Notification 'Socket Error # 10054 Chikoy Работа с сетью в Delphi 0 19.05.2012 18:30
Socket Error 10054 RIO Работа с сетью в Delphi 5 22.09.2009 16:24