IdHTTP.POST - Brak polskich znaków

Odpowiedz Nowy wątek
2011-07-15 19:24
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??

Pozostało 580 znaków

2011-07-15 20:09
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.


edytowany 1x, ostatnio: olesio, 2011-07-15 20:10

Pozostało 580 znaków

2011-07-16 11:09
0

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


- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij

Pozostało 580 znaków

2011-07-16 11:51
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??

Pozostało 580 znaków

2011-07-16 12:14
0

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

Pozostało 580 znaków

2011-07-16 12:56
0

**

Misiekd napisał(a)

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


- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij

Pozostało 580 znaków

2011-07-16 13:56
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.

Pozostało 580 znaków

2011-07-16 15:44
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


- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij
edytowany 2x, ostatnio: Misiekd, 2011-07-16 15:53

Pozostało 580 znaków

2011-07-16 16:06
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:-)

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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