IdHTTP.POST - Brak polskich znaków

0

Witam

Mam taki mały problem ze źródłem html które otrzymuję metodą POST, a dokładniej chodzi o brak polskich liter.
Pobieranie tej samej strony metodą GET nie sprawia takich kłopotów, ale stron jest więcej i przechodzić między nimi mogę wysyłając formularz metodą POST, a w odpowiedzi otrzymuję źródło strony która mnie interesuje, ale bez polskich znaków.

Ktoś podsunie rozwiązanie tego problemu??

0

A to samo sie dzieje jak użyjesz Synapse? Masz na: Obsługa protokołu HTTP przy użyciu pakietu Synapse mój artykuł jak używać Synapse z protkołem HTTP. Bo wiem, że ludzie mają problemy w Indy z POST'em między innymi. Ale jeśli upierasz się przy użyciu Indy to prześledź snifferem co wysyłane jest w nagłówku pakietu. Być może należy w nim ustawić kodowanie na UTF8 (jak to zrobić pod Indy nie mam pojęcia, bo - patrz ostatnie zdanie tego posta) tak jak robi to prawdziwa przeglądarka (a przynajmniej Opera tak robi). Więcej o ile teraz nie wyjechał na wakacje może powiedzieć tutaj kAzek albo ktoś inny, ponieważ ja do obsługi protokołu HTTP nie używam Indy już od baaardzoooooo dawna, ponieważ prościej i pewniej mi posługiwać się Synapse.

0

a co masz zamiast pl znaków?? Pewnie strona kodowana jest inaczej niż win1250 i masz krzaki

0

Skorzystałem z rady olesio i zastosowałem Synapse, niestety nie wiem co robię źle, nie mam doświadczenia z Synapse i nie daje rady z metodą POST.

Mam taki kod:

  UrlData :='highscoreOffset=100&sort=loot&searchUser=';
  SynHttp.Document.Write(Pointer(URLData)^, Length(URLData));
  SynHttp.HTTPMethod('POST','adrest serwera');
  form2.Memo2.Lines.LoadFromStream(SynHttp.Document);

Problem w tym że w rezultacie nie dostaję strony o którą proszę, a zawsze tą samą czyli pierwszą.

Sniffer pokazuje że wysłany POST wygląda tak:

h\000i\000g\000h\000s\000c\000o\000r\000e\000O\000f\000f\000s\000e\000t\000=\0001\0000\0000\000&\000s

a powinien tak

highscoreOffset=100&sort=loot&searchUser=

Co robię źle??

0

jakiego typu jest URLData? bo jest w kodowaniu UTF-16, a tego SynHttp.Document.Write najwyraźniej się nie spodziewa.

0

**

Misiekd napisał(a)

a co masz zamiast pl znaków?? Pewnie strona kodowana jest inaczej niż win1250 i masz krzaki
**

0

przecież już podał: nie tylko polskich liter nie ma, wrzuca mu \000 co każdą literę.
Błędem jest rzutowanie na wskaźnik (pointer) zamiast operowanie typami znakowymi jak pchar, i pansichar.

0

Azarien przeczytaj sobie jego post jeszcze raz - tym razem czytaj go tak długo aż zrozumiesz.

Mnie nie obchodzi CO ON WYSYŁA tylko co dostaje zamiast pl liter w POBRANEJ stronie przez idhttp.post

a co do rzutowania to trzeba by najpierw sprawdzić czego oczekuje dana funkcja i na tej podstawie ferować wyrok

BTW Synapse w D2k9 i wyższych http://www.ararat.cz/synapse/doku.php/public:howto:d2009

0

Problem rozwiązany:-)

Powodem był chyba brak kompatybilności z nowszymi wersjami delphi
Kompilacja kodu na delphi 7 rozwiązała problem.

Dzięki za pomoc:-)

1 użytkowników online, w tym zalogowanych: 0, gości: 1