Hej !
Dostałem takie zadania:
napisać programik, który połączy się z wikipedią (oczywiście jest potrzebne hasło i login - bo wiki jest zabezpieczona), a następnie utworzy w niej artykuł o nazwie Student i umieści w nim dane: imie, nazwisko, nr indeksu.
Zadanie niby banalne :-P
Udało mi się napisać moduł zalogowania na wikipedii
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
EncodedStr: string;
: OleVariant;
Post: OleVariant;
begin
EncodedStr := 'wpName=login&wpPassword=haslo';
// The post must be an array. But without null terminator (-1)
Post := VarArrayCreate([0, Length(EncodedStr) - 1], varByte);
// Put Post in array
for I := 1 to Length(EncodedStr) do
Post[I - 1] := Ord(EncodedStr[I]);
Header := 'Content-Type: application/x-www-form-urlencoded' + #10#13;
WebBrowser1.Navigate('http://127.0.0.1/~mediawiki/index.php?title=Special:Userlogin&action=submitlogin&type=login', EmptyParam, EmptyParam, Post, Header);
end;
I loguje się prawidłowo ;-P . Problem mam z utworzeniem artykułu:
procedure TForm1.Button6Click(Sender: TObject);
var
strData: string;
PostData: OleVariant;
Headers : OleVariant;
i: Integer;
begin
strData :=
'wpEditToken=' + '+/' + '&' +
'wpSave=' + 'Save page' + '&' +
'wpStarttime=' + '20071128191943' + '&' +
'wpEdittime=' + '20071128191953' + '&' +
'wpTextbox1=' + 'Imie<br>Nazwisko<br>Nr indeksu';
PostData := VarArrayCreate([0, Length(strData) - 1], varByte);
for i := 1 to Length(strData) do
PostData[i-1] := Ord(strData[i]);
Headers := 'Content-Type: application/x-www-form-urlencoded' + #10#13;
WebBrowser1.Navigate('http://127.0.0.1/~mediawiki/index.php?title=Student&action=submit', EmptyParam, EmptyParam, PostData, Headers);
end;
I niby wszystko działa, ale pokazuje się komunikat:
Przepraszamy! Serwer nie może przetworzyć tej edycji z powodu utraty danych sesji. Spróbuj
jeszcze raz. Jeśli to nie pomoże - wyloguj się i zaloguj ponownie.
Czy ktoś wie jak to naprawić? Chodzi mi o to, żeby po naciśnięciu buttona utworzony został artykuł.
Oczywiście testuje wszystko na localhostcie, a nie zaśmiecam wikipedii P