IdHTTP i wysyłanie danych metodą post

Odpowiedz Nowy wątek
2011-08-16 10:34
0

Witam,
według tego artykułu HTTP piszę funkcję która przez komponent IdHTTP przekaże do skryptu php trzy zmienne metodą post, i odbierze wynik. Wszystko jest przygotowane według wzoru, ale skrypt php nie dostaje danych postem.

    Input.WriteString(Format('id=%s&pass=%s&token=%s', [id, pass, NewToken]));
    Logger.Post(LoggerAddress,Input,Output);
    ShowMessage(Output.DataString);

Logger to oczywiście IdHTTP.
Danych teoretycznie wysłanych drogą post nie mogę nigdzie odnaleźć, w żadnej z tablic print_r($_POST), print_r($_SERVER) itp...
na google ciężko coś znaleźć na ten temat, bo jak metoda POST to i oczywiście PHP...

Pozostało 580 znaków

2011-08-16 11:15
0

co dostajesz w output?


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

Pozostało 580 znaków

2011-08-16 11:34

Zrób na podstawie kodu poniżej ale podejrzewam, że Twój kod nie działa tylko dlatego bo nie ustawiasz ContentType.
Inne potencjalne przyczyny: tak jak poniżej najpierw GET po to by pobrać ewentualnie potrzebne ciacha, nie ustawienie Referer (niektóre strony sprawdzają).

procedure TForm1.Button1Click(Sender: TObject);
const
  USER_AGENT = 'Mozilla/5.0 (Windows NT 5.1; rv:2.0) Gecko/20100101 Firefox/4.0';
  OGAME_URL = 'http://ogame.pl/';
  SERV_IO_LOGIN_URL = 'http://uni109.ogame.pl/game/reg/login2.php';
var
  sl: TStringList;
 
begin
IdHTTP1.HandleRedirects:= True;
IdHTTP1.Request.UserAgent:= USER_AGENT;
IdHTTP1.Get(OGAME_URL);
IdHTTP1.Request.Referer:= OGAME_URL;
IdHTTP1.Request.ContentType:= 'application/x-www-form-urlencoded';
sl:= TStringList.Create;
try
sl.Add('uni_id=');
sl.Add('kid=');
sl.Add('v=2');
sl.Add('is_utf8=0');
sl.Add('uni_url=uni109.ogame.pl');
sl.Add('login=test01');
sl.Add('pass=tester01');
Memo1.Text:= IdHTTP1.Post(SERV_IO_LOGIN_URL, sl);
finally
sl.Free;
end;
end;

Nie odpowiadam na PW w sprawie pomocy programistycznej.
Pytania zadawaj na forum, bo:
od tego ono jest ;) | celowo nie zawracasz gitary | przeczyta to więcej osób a więc większe szanse że ktoś pomoże.
edytowany 1x, ostatnio: kAzek, 2011-08-16 11:42
trafiłeś w słowo klucz: IdHTTP1.Request.ContentType:= 'application/x-www-form-urlencoded'; - krwq 2011-08-23 00:26

Pozostało 580 znaków

2011-08-16 11:45
janusz
0

Nie rozumiem czemu to musi być metoda post. Przecież i tak nikt nie zobaczy adresu, użyj get.

var S: TStringStream;
begin
  S := TStringStream.Create('');
  idHTTP1.GET('http://mojastrona.pl/skrypt.php?zmienna1=wartosc1&zmienna2=wartosc2', S);
  //Tutaj możesz odczytać te dane, np:
  Memo1.Text := S.DataString;
  S.Free;
end
To nie rozwiązanie problemu tylko próba jego ominięcia. - kAzek 2011-08-16 11:53
No i dane przesłane w adresie metodą GET mogą gdzieś tam zostać zapisane na serwerze choćby w głupich statystykach. A u mnie te dane są, jak nie trudno domyślić się po nazwach zmiennych, dość poufne. - l153k 2011-08-16 12:06

Pozostało 580 znaków

2011-08-16 12:04
0

w output mam dokładnie to co bym dostał bez żadnych danych w input ;) odbiera normalnie, mam kod html.
Wystarczyło że dodałem linię z ContentType i ruszyło ;) głupio mi aż teraz bo przyjrzałem się w artykule i jest tam to uwzględnione.

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