![]() |
|
#1
|
||||
|
||||
![]() не удается совершить get запрос
на этот адресс http://pogoda.yandex.ru/тольятти/details/ ошибка 400 синтаксис вроде, кирилицу не хочет принимать, но мне надо именно так, из браузера так работает, мб каким другим заросом сделать надо? посоветуйте |
#2
|
||||
|
||||
![]() посмотри в сторону Gismeteo.Informer, легче распарсить, да и сделано специально для сторонних программ\веб-сайтов
TAleD = class(TUser) public function HelpMe(ASubject, ARequest: String): String; function GiveMeExample(ASubject: String): TStringList; procedure WriteReview(APost: Integer; ADescription: TStringList); end; |
#3
|
||||
|
||||
![]() Так, большинство сайтов в url'е кириллицу не понимают. Тебе запрос из http://pogoda.yandex.ru/тольятти/details/ надо трансформировать в http://pogoda.yandex.ru/%D0%A2%D0%BE%D0%BB%D1%8C%D1%8F%D1%82%D1%82%D0%B8/details/.
Отлавливаешь русские символы в url'е и заменяешь результатом функции ord. Код:
var url{то что получим на выходе},stroka{тот url что требуется преобразовать}:string; s:char; i:integer; //... for i:=1 to length(stroka) do begin s:=stroka[i]; if s in ['А'..'Я', 'а'..'я'] then begin url:=url+'%'+inttostr(ord(s)); end else url:=url+s; end; От корректности формулировки поставленной задачи зависят: качество, скорость и желание её реализации!
Последний раз редактировалось march, 07.02.2011 в 20:24. |
#4
|
||||
|
||||
![]() march, это будет так понимаю в строке символы преобразовывать?
AleD http://informer.gismeteo.ru/getcode/xml.php?id=27612 от сюда пробовал парсить но чтото иногда быстро приходит иногда от вобще оттуда не приходит и программа секунд на 30 подвисает cod-код города all:=idhttp1.Get('http://informer.gismeteo.ru/xml/'+cod+'_1.xml'); Последний раз редактировалось ALexandr555, 07.02.2011 в 20:43. |
#5
|
||||
|
||||
![]() да, преобразование символов, потом ипользуешь этот url (можно и в латиницу)
От корректности формулировки поставленной задачи зависят: качество, скорость и желание её реализации!
|
#6
|
||||
|
||||
![]() Код:
var url,stroka:string; s:char; i:integer; Begin url:='http://pogoda.yandex.ru/' stroka:='тольятти'; for i:=1 to length(stroka) do begin s:=stroka[i]; if s in ['А'..'Я', 'а'..'я'] then begin url:=url+'%'+inttostr(ord(s)); end else url:=url+s; end; url:=url+'/details/'; end; |
#7
|
||||
|
||||
![]() march, твоим способом он смоздают такую вот ссылку
http://pogoda.yandex.ru/%242%238%235...2%232/details/ и соответственно она ведет в никуда |
#8
|
||||
|
||||
![]() Код:
procedure TForm1.Button1Click(Sender: TObject); var url,stroka,text:string; s:char; i:integer; Begin url:='http://pogoda.yandex.ru/'; stroka:='тольятти'; for i:=1 to length(stroka) do begin s:=stroka[i]; if s in ['А'..'Я', 'а'..'я'] then begin url:=url+'%'+inttostr(ord(s)); end else url:=url+s; end; url:=url+'/details/'; text:=Utf8ToAnsi(idhttp1.Get(url)); memo2.Lines.Add(url); memo2.Lines.Add(text); |
#10
|
||||
|
||||
![]() ---------------------------------------
Последний раз редактировалось ALexandr555, 08.02.2011 в 10:41. |
#11
|
||||
|
||||
![]() Код:
procedure TFormMain.Button2Click(Sender: TObject); var s: String; begin s:='http://pogoda.yandex.ru/тольятти/details/'; s:=UTF8Encode(s); IdHTTP1.HandleRedirects:=True; Memo1.Text:=UTF8Decode(IdHTTP1.Get(s)); end; Пишу программы за еду. __________________ |
#12
|
||||
|
||||
![]() NumLock спс работает
|
#13
|
||||
|
||||
![]() NumLock гм... чтото он не распознает плюсы и минусы вместо них ?11…?9 хотя должно быть или +11…+9 или -11…-9
|
#14
|
||||
|
||||
![]() Utf8ToAnsi тоже не распознает, хелп
|
#15
|
||||
|
||||
![]() потому что это не - и +, а визуально похожие символы.
Код:
var s: String; begin s:='http://pogoda.yandex.ru/тольятти/details/'; s:=UTF8Encode(s); IdHTTP1.HandleRedirects:=True; s:=IdHTTP1.Get(s); // заменяем - на - :) s:=StringReplace(s, Chr($e2)+Chr($88)+Chr($92), '-', [rfReplaceAll, rfIgnoreCase]); s:=UTF8Decode(s); Memo1.Text:=s; end; Пишу программы за еду. __________________ |