Здравствуйте. Пишу парсер сайта Price.ru, через idhttp посылаю запрос с партномером и получаю страницу с товарами.Тестовый код:
IdHTTP1.Request.Clear;
IdHttp1.HandleRedirects := true;
with IdHTTP1.Request do
begin
Host := 'price.ru';
Accept := 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
AcceptLanguage := 'ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3';
Connection := 'keep-alive';
Referer := 'http://price.ru/offers?query='+Trim(edPartNumber.Text)+'&limit=100&auto=1'
end;
try
html := UTF8Decode(IdHTTP1.get('http://price.ru/offers?query='+Trim(edPartNumber.Text)+'&limit=100&auto=1'));
except on e : EIDHttpProtocolException do
Begin
if e.ErrorCode = 302 then
begin
try
html:=IdHTTP1.Get(IdHTTP1.Response.Location);
except on e:Exception do
ShowMessage('Ошибка при получении нового адреса.'+e.Message);
end;
end
else
ShowMessage('Ошибка другого вида, не 302:'+e.Message);
end;
on e:exception do
begin
ShowMessage(e.Message);
end;
edPartNumber.Text - tedit с партномером
С партномерами вида "7328PBH" проблем нет, сервер возвращает htm-код страницы.
А вот с партомерами вида "OEM; SL8VY",
"312-0383 312-0384 312-0386 310-9080 310-9081 312-0383 312-0384 312-0386 312-0653 451-10297 451-10298 451-10299 KP428 NT372 GD775 GD776 GD785 GD787 HX345 JD605 JD606 JD610 JD616 JD617 JD634 JD648 KD489 KD491 KD492 KD494 KD495 KD496 KP423 MJ456 NT379 PC764 PD685 RC126 RD300 RD301 TC030 TD116 TD117 TD175 TG226 0GD77 0GD787 0JD605 0JD606 0JD610 0JD616 0JD634 0JD648 0KD489 0KD491 0KD494 0KD495 0PD685 0RD300 0RD301 0TC030 0TD116 0TD117 0TD175 0TG226 0UD088 0UG260 HX345 UD088 0TD175 0TG226 0UG260"
работать не хочет, выдает "connection closed gracefully". Причем это выдается при одиночном запросе - запустил прогу,указал партномер - вывалилась ошибка, тут же указываю нормальный партномер - сервер возвращает html. Может кто-нибудь объяснить в чем проблема?