Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Интернет и сети
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 16.03.2016, 10:51
MAPODEP MAPODEP вне форума
Прохожий
 
Регистрация: 16.03.2016
Сообщения: 1
Версия Delphi: Delphi XE7
Репутация: 10
По умолчанию Delphi отправка сообщений в ВК

не знаю что уже и делать, отправляются сообщения либо не форматированный текст, либо вообще не отправляются
1. в таком виде, пост нормально отображается
response:= send ('GET','https://api.vk.com/method/wall.post?owner_id=ИД_пользователя&message='+UrlEn code(AnsiToUTF8('Салат "Лисичка"'+#10#13+''+#10#13+'Ингредиенты:'+#10#13+ '2 филе куриной грудки'+#10#13+'3 маринованных огурца'+#10#13+'200 гр. корейской моркови'+#10#13+'200 гр. сыра'+#10#13+'2 зубчика чеснока'+#10#13+'майонез'+#10#13+'зелень'+#10#13+' '+#10#13+'Приготовление:'+#10#13+'1. Филе отвариваем в подсоленной воде,затем нарезаем полосочками (или разбираем руками на волокна).'+#10#13+'2. Огурцы также нарезаем полосочками,сыр на крупной терке.'+#10#13+'3. Смешиваем филе.сыр,огурцы и морковь,добавляем выдавленный через пресс чеснок и заправляем майонезом.'))+'&access_token='+token);

2. А в таком не выходит
response:= send ('GET','https://api.vk.com/method/wall.post...iToUTF8(Edit3.Text))+'&access_token='+ token);



весь код:

Код:
unit Unit1;

interface

uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls,httpsend,ssl_openssl,lib,
Vcl.ComCtrls, System.StrUtils, Xml.xmldom, Xml.XMLIntf, Xml.XMLDoc,
Vcl.Buttons, Vcl.Grids, FireDAC.Stan.StorageXML, ComObj, msxml, Vcl.ExtCtrls,
NiceGrid;

type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
Memo1: TMemo;
Button2: TButton;
Button3: TButton;
Edit3: TEdit;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
Button8: TButton;
ListBox1: TListBox;
BitBtn1: TBitBtn;
XMLDocument1: TXMLDocument;
StringGrid1: TNiceGrid;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button7Click(Sender: TObject);

procedure Button5Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);

private
{ Private declarations }
public
email,pass,response,msg,userid:string;
{ Public declarations }
end;

var
Form1: TForm1;
token:string;

implementation

{$R *.dfm}

procedure TForm1.BitBtn1Click(Sender: TObject);
var
i, n: integer;
s,t:string;
Nodes: IXMLDomNodeList;
doc :IXMLDOMDocument;
begin
Doc := CreateComObject(CLASS_DOMDocument) as IXMLDOMDocument;
Doc.load('data.xml');
Nodes := Doc.selectNodes('//post/*');
n:=0;
for i:=0 to Nodes.length-1 do
begin
if Nodes.nodeName='text' then
begin
n:=n+1;

s:=(Format('%s', [Nodes.text]));
// showmessage (s);
t:=StringReplace( s, #10, #39'+#10#13+'#39, [rfReplaceAll]);
StringGrid1.Cells[0,n]:=#39 +t+ #39 ;
// showmessage (StringGrid1.Cells[0,n]);
StringGrid1.RowCount:=StringGrid1.RowCount+1;
end;

if Nodes.nodeName='photo_130' then
begin
StringGrid1.Cells[1,n]:=(Format('%s', [Nodes.text]));
end;

if Nodes.nodeName='comments' then
begin
StringGrid1.Cells[2,n]:=(Format('%s', [Nodes.text]));
end;
if Nodes.nodeName='likes' then
begin
StringGrid1.Cells[3,n]:=(Format('%s', [Nodes.text]));
end;
if Nodes.nodeName='reposts' then
begin
StringGrid1.Cells[4,n]:=(Format('%s', [Nodes.text]));
end;
end;

//Srv:=Nil;
Doc := nil;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
s2:string;
begin
email:=Edit1.Text;
pass:=Edit2.Text;
response:=send('GET','https://oauth.vk.com/token?grant_ty...assword='+pass+'&captcha_key=&captcha_sid=');

msg:=response;
if Pos('token',response) <> 0 then
begin
s2:=copy(response, pos('access_token":"', response), pos('","expires_in', response)-3);
delete(s2, 1, 15);
token:=s2;
Memo1.Lines.Add(msg);
msg:=token;

userid:=s2;
s2:=Copy(response,Pos('user_id":',response),Pos('}',response));
Delete(s2,1,9);
Delete(s2,Pos('}',s2),1);
userid:=s2;
Memo1.Lines.Add(msg);
msg:=userid;
Memo1.lines.add (msg);


end else
begin
memo1.lines.add('Error');
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
//showmessage(msg);
response:=send('GET','https://api.vk.com/method/friends.get?uid=ИД_пользователя&access_token='+token);


msg:=response;
Memo1.Lines.Add(msg)
end;
function UrlEncode(Str: ansistring): ansistring;

function CharToHex(Ch: ansiChar): Integer;
asm
and eax, 0FFh
mov ah, al
shr al, 4
and ah, 00fh
cmp al, 00ah
jl @@10
sub al, 00ah
add al, 041h
jmp @@20
@@10:
add al, 030h
@@20:
cmp ah, 00ah
jl @@30
sub ah, 00ah
add ah, 041h
jmp @@40
@@30:
add ah, 030h
@@40:
shl eax, 8
mov al, '%'
end;

var
i, Len: Integer;
Ch: ansiChar;
N: Integer;
P: PansiChar;
begin
Result := '';
Len := Length(Str);
P := PansiChar(@N);
for i := 1 to Len do
begin
Ch := Str;
if Ch in ['0'..'9', 'A'..'Z', 'a'..'z', '_'] then
Result := Result + Ch
else
begin
if Ch = ' ' then
Result := Result + '+'
else
begin
N := CharToHex(Ch);
Result := Result + P;
end;
end;
end;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin

response:= send ('GET','https://api.vk.com/method/wall.post?owner_id=ИД_пользователя&message='+UrlEncode(AnsiToUTF8('Салат "Лисичка"'+#10#13+''+#10#13+'Ингредиенты:'+#10#13+'2 филе куриной грудки'+#10#13+'3 маринованных огурца'+#10#13+'200 гр. корейской моркови'+#10#13+'200 гр. сыра'+#10#13+'2 зубчика чеснока'+#10#13+'майонез'+#10#13+'зелень'+#10#13+''+#10#13+'Приготовление:'+#10#13+'1. Филе отвариваем в подсоленной воде,затем нарезаем полосочками (или разбираем руками на волокна).'+#10#13+'2. Огурцы также нарезаем полосочками,сыр на крупной терке.'+#10#13+'3. Смешиваем филе.сыр,огурцы и морковь,добавляем выдавленный через пресс чеснок и заправляем майонезом.'))+'&access_token='+token);
msg:=response;
if Pos('post_id',response)<> 0 then
begin
Memo1.Lines.Clear;
Memo1.Lines.Add('Пост отправлен'+msg);
end else
begin
Memo1.Lines.Add('Вы не авторизованы'+msg);
end;
end;



procedure TForm1.Button5Click(Sender: TObject);
begin
end;

procedure TForm1.Button7Click(Sender: TObject);
begin
end;

end.

Последний раз редактировалось Aristarh Dark, 16.03.2016 в 10:54.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 21:24.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter