XML-RPC расшифровывается как Remote Procedure Call – удаленный вызов процедур с помощью XML. Блогу, работающему под WordPress, не забудьте дать разрешение на использование протокола XML-RPC в административной панели.
Приведенный ниже код (является основной частью программы) отвечает непосредственно за отправку поста в блог. Использует модули из библиотеки XML-RPC (положил ее сырцы в /../sources). Заголовок поста находится в переменной PostTitle, а содержание – в MemoSrc.Text (TMemo), который передается как параметр description через RPCStruct.AddItem.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
procedure PostToWordpressBlog; var RPCFunction: TRpcFunction; RPCStruct: TRpcStruct; RpcCaller: TRpcCaller; RPCResult: IRpcResult; begin RpcCaller := TRpcCaller.Create; if FormHelper.CheckBoxUseProxy.Checked then begin RpcCaller.ProxyName := EditProxyAddr.Text; RpcCaller.ProxyPort := (StrToInt(Trim(EditProxyPort.Text))); end; RpcCaller.HostName:='rooslan.com/eat'; RpcCaller.EndPoint:='/xmlrpc.php'; RPCFunction := TRpcFunction.Create; RPCFunction.ObjectMethod := 'metaWeblog.newPost'; RPCFunction.AddItem(1); RPCFunction.AddItem('rooslan'); // blog login RPCFunction.AddItem('mypassword'); // username password RPCStruct := TRpcStruct.Create; RPCStruct.AddItem('title', UTF8Encode(PostTitle)); RPCStruct.AddItem('description', UTF8Encode(MemoSrc.Text)); // Rpcstruc.AddItem('wp_password','ediext'); //пароль на запись RPCFunction.AddItem(RPCStruct); RPCFunction.AddItem(true); // PUBLISH! RpcResult := RpcCaller.Execute(RpcFunction); if RpcResult.IsError then ShowMessageFmt('Error: (%d) %s', [RpcResult.ErrorCode, RpcResult.ErrorMsg]) else ShowMessage('Success: ' + RpcResult.AsString); RpcCaller.Free; end; |
P. S. Рекомендую ознакомиться с исходными кодами программы blogBuddy
Also, см. Создаем Drupal-страницы из C# (XML-RPC “node.save”)
07.02.2004
07.02.2004