Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 07.02.2011, 19:21
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию GET запрос

не удается совершить get запрос
на этот адресс http://pogoda.yandex.ru/тольятти/details/
ошибка 400 синтаксис вроде, кирилицу не хочет принимать, но мне надо именно так, из браузера так работает, мб каким другим заросом сделать надо? посоветуйте
Ответить с цитированием
  #2  
Старый 07.02.2011, 19:38
Аватар для AleD
AleD AleD вне форума
Активный
 
Регистрация: 21.02.2009
Адрес: г.Краснокаменск
Сообщения: 383
Репутация: 91
По умолчанию

посмотри в сторону 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  
Старый 07.02.2011, 19:50
Аватар для march
march march вне форума
Начинающий
 
Регистрация: 04.05.2009
Сообщения: 110
Репутация: 18
По умолчанию

Так, большинство сайтов в 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  
Старый 07.02.2011, 20:38
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию

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  
Старый 07.02.2011, 20:43
Аватар для march
march march вне форума
Начинающий
 
Регистрация: 04.05.2009
Сообщения: 110
Репутация: 18
По умолчанию

да, преобразование символов, потом ипользуешь этот url (можно и в латиницу)
__________________
От корректности формулировки поставленной задачи зависят:
качество, скорость и желание её реализации!
Ответить с цитированием
  #6  
Старый 07.02.2011, 20:48
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию

Код:
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;
march спасибо понял, так буду делать
Ответить с цитированием
  #7  
Старый 08.02.2011, 09:26
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию

march, твоим способом он смоздают такую вот ссылку
http://pogoda.yandex.ru/%242%238%235...2%232/details/
и соответственно она ведет в никуда
Ответить с цитированием
  #8  
Старый 08.02.2011, 09:28
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию

Код:
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);
код собственно
Ответить с цитированием
  #9  
Старый 08.02.2011, 10:05
Аватар для march
march march вне форума
Начинающий
 
Регистрация: 04.05.2009
Сообщения: 110
Репутация: 18
По умолчанию

Э, не заметил, там восьмеричный код требуется.
Надо inttostr(ord(s)) пропустить через эту функцию.
__________________
От корректности формулировки поставленной задачи зависят:
качество, скорость и желание её реализации!
Ответить с цитированием
  #10  
Старый 08.02.2011, 10:38
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию

---------------------------------------

Последний раз редактировалось ALexandr555, 08.02.2011 в 10:41.
Ответить с цитированием
  #11  
Старый 08.02.2011, 10:38
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Код:
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  
Старый 08.02.2011, 10:41
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию

NumLock спс работает
Ответить с цитированием
  #13  
Старый 08.02.2011, 12:42
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию

NumLock гм... чтото он не распознает плюсы и минусы вместо них ?11…?9 хотя должно быть или +11…+9 или -11…-9
Ответить с цитированием
  #14  
Старый 08.02.2011, 13:17
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию

Utf8ToAnsi тоже не распознает, хелп
Ответить с цитированием
  #15  
Старый 08.02.2011, 13:52
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

потому что это не - и +, а визуально похожие символы.
Код:
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;
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 16:53.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025