[Indy] IdHTTP i POST

0

Witam.

Usiłuję od kilku godzin napisać programik, który będzie raz na jakiś czas oddawał głos w ankiecie na stronie. Używam Borland C++ Buildera i IdHTTP z pakietu Indy. Łączę się ze stroną i muszę coś wysłać metodą POST.
Nie wiem jednak co ja tam mam wysłać... I za nic nie mogę znaleźć ani w google ani w dokumentacji protokołu HTTP...
Ankieta w uproszczeniu wygląda tak:

<form name="form2" method="post" action="index.php?option=com_poll&amp;Itemid=1">
<td class='sectiontableentry2' valign="top"><input type="radio" name="voteid" id="voteid13" value="13" alt="13" /></td>
			  <td class='sectiontableentry2' valign="top"><label for="voteid13">Kandydatura pierwsza</label></td>
			</tr>
						<tr>
			  <td class='sectiontableentry1' valign="top"><input type="radio" name="voteid" id="voteid14" value="14" alt="14" /></td>
			  <td class='sectiontableentry1' valign="top"><label for="voteid14">Kandydatura druga</label></td>
<input type="submit" name="task_button" class="button" value="Głosuj" />&nbsp;&nbsp;
			  <input type="button" name="option" class="button" value="Wyniki" onclick="document.location.href='index.php?option=com_poll&amp;task=results&amp;id=15';" />

Mógłby mi ktoś podpowiedzieć co powinienem wysyłać aby oddać odpowiedni głos?

0

IdHTTP1->Connected();
IdHTTP1->Post("index.php?option=com_poll&Itemid=1", "task_button=Głosuj&option=Wynik&voteid=14");
IdHTTP1->Disconnect();
oczywiscie dodaj tam pelen adres do pliku ktory odbiera formularz

0

Dzięki!
Hmm mógłbyś mi jeszcze powiedzieć o co dokładniej chodziło z plikiem odbierającym formularz?
Po prostu mogę go zapisać na dysk?

0

heheh. jak wiadomo raczej tego formularza nie wysyłasz w kosmos :) . index.php?option=com_poll&Itemid=1 zamien na np http://www.stroneczka.pl/index.php?option=com_poll&amp;Itemid=1 . Po prostu musisz podać pełny link, gdzie ten formularz ma zostac wysłany. Gdybyś dał tylko index.php?option=com_poll&Itemid=1 to nie wiadomo o co chodzi, tzn nie ma w serwerach dns strony z adresem index.php?option=com_poll&Itemid=1 . Wpisz sobie w przegladarce ten adres "index.php?option=com_poll&Itemid=1 " jak wiadomo nic nie znajdzie :)

0

Hmm tylko ze to tak dziwacznie bo Post przyjmuje 3 argumenty:
adres strony i 2 jakies argumenty klasy TStream... a ja nie mam pojecia do czego one są:)

0

ajj..
IdHTTP1->Connected();
TStringStream *Params = new TStringStream("");
Params->WriteString("task_button=Głosuj&option=Wynik&voteid=14");
IdHTTP1->Post("index.php?option=com_poll&Itemid=1",Params);
IdHTTP1->Disconnect();
Na koniec mozesz usunac wskaznik z klasa
delete Params;

0

hehe no tak, próbowałem :)

Chodzi mi konkretnie o:
Post(URL: string; const Source: TStrings; const AResponseContent: TStream);

Ostatni parametr...
oraz, po co to zrodlo?
Post coś zwraca?

0

Ten 3 to nie wiem do czego słuzy. Moze dodatkowe opcje. A co do zrodla, to chcialem pokazac

2 jakies argumenty klasy TStream
tzn w klasie tstream. Ale ja bym się nie przejmował 3 argumentem. On jest argumentem domniemanym

0

OK przepraszam, wszystko działa, wystarczyło za 3 argument podać 0... ale ze mnie głupiec :)
Dzięki Ci bardzo za pomoc!

0

A to zrób(dodaj) TStringStream *out = new TStringStream(""); i
IdHTTP1->Post("index.php?option=com_poll&Itemid=1",Params, out);
delete out;

Tak naprawde nie uzywalem indy do c++, ale z delphi było tak, ze 3 argument był domniemany.

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