• Что бы вступить в ряды "Принятый кодер" Вам нужно:
    Написать 10 полезных сообщений или тем и Получить 10 симпатий.
    Для того кто не хочет терять время,может пожертвовать средства для поддержки сервеса, и вступить в ряды VIP на месяц, дополнительная информация в лс.

  • Пользаватели которые будут спамить, уходят в бан без предупреждения. Спам сообщения определяется администрацией и модератором.

  • Гость, Что бы Вы хотели увидеть на нашем Форуме? Изложить свои идеи и пожелания по улучшению форума Вы можете поделиться с нами здесь. ----> Перейдите сюда
  • Все пользователи не прошедшие проверку электронной почты будут заблокированы. Все вопросы с разблокировкой обращайтесь по адресу электронной почте : info@guardianelinks.com . Не пришло сообщение о проверке или о сбросе также сообщите нам.

Помогите С Отправкой Сообщений В Вк

  • Автор темы Автор темы MAPODEP
  • Дата начала Дата начала

MAPODEP

Принятый Кодер
Регистрация
18 Фев 2016
Сообщения
9
Баллы
28
не знаю что уже и делать, отправляются сообщения либо не форматированный текст, либо вообще не отправляются
1. в таком виде, пост нормально отображается

Код:
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);

2. А в таком не выходит

Код:
response:= send  ('GET','https://api.vk.com/method/wall.post?owner_id=ИД_пользователя&message='+UrlEncode(AnsiToUTF8(Edit3.Text))+'&access_token='+token);

67014b544480.jpg

А такой текст вообще не постится:

Вкуснейшее универсальное заварное тесто для вареников, пельменей, чебуреков...'+#10#13+''+#10#13+'Это не тесто, а просто песня! Нежное, эластичное, податливое, приятное в работе и очень вкусное! Что пельмени, что вареники или чебуреки всегда с ним получаются просто изумительные. А еще из него можно приготовить вкуснейшие манты, позы, пироги и слоеные лепешки.'+#10#13+''+#10#13+'Ингредиенты:'+#10#13+'-1 яйцо'+#10#13+'-соль'+#10#13+'-3 стакана муки'+#10#13+'-1 ст.л. растительного масла'+#10#13+'-1 стакан кипятка'+#10#13+''+#10#13+'Приготовление:'+#10#13+'К яйцу добавляем соль и взбиваем вилкой.'+#10#13+'Затем добавляем 3 стакана муки и 1 ложку растительного масла.'+#10#13+'Хорошенько перемешиваем и добавляем 1 стакан кипятка (не бойтесь, клея не будет)'+#10#13+'Вымешиваем ложкой.'+#10#13+'А потом замешиваем руками (если необходимо, добавляем немного муки)'+#10#13+''+#10#13+'Тесто на минералке для пельменей и вареников.'+#10#13+''+#10#13+'Ингредиенты:'+#10#13+'-1 стакан минеральной газированной воды,'+#10#13+'-1 яйцо,'+#10#13+'-0,5 чайной ложки соли,'+#10#13+'-0,5 чайной ложки сахара,'+#10#13+'-4 столовые ложки масла растительного,'+#10#13+'-мука (сколько войдет).'+#10#13+''+#10#13+'Приготовление:'+#10#13+'В миске соедините все составляющие, кроме муки. Муку подсыпайте постепенно. Замесите мягкое эластичное тесто. Оно должно получиться блестящим и не должно прилипать к рукам и столу.'+#10#13+'Лепим вареники или пельмени. Это тесто можно варить, тушить и даже печь. Оно подойдет и для чебуреков, но тогда в тесто не добавляйте яйцо.'+#10#13+''+#10#13+'Заварное тесто, просто супер.'+#10#13+''+#10#13+'Ингредиенты:'+#10#13+'-1 ст.воды'+#10#13+'-50 г.сливочного масла'+#10#13+'-щепотка соли'+#10#13+'-2 яйца'+#10#13+'-3 ст.муки'+#10#13+''+#10#13+'Приготовление:'+#10#13+'1)В кастрюлю налить воду,добавить соль,сливочное масло.(вода должна закипеть,масло растворится)'+#10#13+'2)В кипящую воду добавить 1 ст. муки(быстро перемешать)'+#10#13+'3)Вбить по одному яйца(я мешала ложкой,затем руками,масса была не горячая,а тёплая)'+#10#13+'4)Всыпать муку и замесить тесто.(лучше конечно по одному стакану)'+#10#13+'5)Тесту дать 30 минуток отдохнуть(я накрыла пищевой плёнкой)'+#10#13+'6)Тесто получается очень мягкое,эластичное.Была приятно с ним работать!!!!'+#10#13+'Более того очень удачный вариант,подходит и на пельмени и вареники.Приготовила тесто утром,а вечером готовила вареники и пельмени(тесто в холодильнике,накрыто пищевой плёнкой).Так как я решила приготовить два вида теста у меня было с чем сравнить.Скажу даже вкусовые качества просто меня поразили,я давно не ела таких вкусных вареников и пельменей!!!!!И ещё есть очень большой плюс((у меня осталось немного вареников и пельменей),утром разогрела и была потрясена,они как будто только сварены!!!!Были у моей семьи пельмени счастья!!!!(достались старшему сыночку!!!!)Приготовьте это тесто и оно поистине вам понравится на все 100%.'+#10#13+''+#10#13+'Заварное тесто для вареников и пельменей.'+#10#13+''+#10#13+'Это тесто научила меня делать свекровь. Сначала я им пользовалась в пост, но оно так понравилось мне, что я стала его использовать и для пельменей, и для вареников и всяких жаренных лепёшек с всевозможными начинками. Оно совсем не содержит яиц, очень пластичное, хорошо лепится, но не липкое к поверхности и рукам, не требует подпыления мукой.'+#10#13+''+#10#13+'Ингредиенты:'+#10#13+'-кипяток 250 мл'+#10#13+'-растительное масло 50 г'+#10#13+'-соль 1/2 ч. л.'+#10#13+'-мука примерно 400г'+#10#13+''+#10#13+'Приготовление:'+#10#13+'В кипяток влить масло, добавить соль и половину муки.'+#10#13+'Размешать миксером насадками для теста. Сначала тесто довольно комковатое, но очень быстро становится однородным и гладким.'+#10#13+'Постепенно добавляя муку, замесить довольно крутое, но мягкое тесто. Если тесто получится слишком крутое – не беда, можно положить его в пакет на 30 мин., оно станет более пластичным.'+#10#13+'Тесто напоминает мягкий пластилин, хорошо лепится, при этом совершенно не прилипает к столу, скалке и рукам, не требует подпыления мукой. Раскатывается довольно тонко, при растягивании не рвётся.'+#10#13+'варятся очень быстро, хорошо сохраняют форму.'+#10#13+'Попробуйте! Уверенна, Вам понравится!'+#10#13+''+#10#13+'Тесто на вареники и пельмени.'+#10#13+''+#10#13+'Классическое пельменное тесто должно состоять из муки, яиц и воды (молока)- этот состав определился многовековым опытом многих народов. Другой вопрос стоит в определении правильных пропорций и тут опять на помощь приходит опыт. Идеальное соотношение яиц и воды - на каждое среднее яйцо необходимо брать 2 стакана муки. Для получения необходимой вязкости теста добавляется тёплая вода и/или молоко. Растительное масло делает тесто более нежным и податливым. Соль добавляется по вкусу.'+#10#13+''+#10#13+'Ингредиенты:'+#10#13+'-Мука (зависит от сорта муки и от ее влажности ) — 2-3 стак.'+#10#13+'-Молоко — 1/2 стак.'+#10#13+'-Вода — 1/3 стак.'+#10#13+'-Яйцо — 1 шт'+#10#13+'-Масло растительное — 1 ч. л.'+#10#13+'-Соль — 1 ч. л.'+#10#13+''+#10#13+'Приготовление:'+#10#13+'Итак, высыпаем на стол или в чашку 2 стакана муки. В центре полученной горки делаем небольшое углубление, разбиваем туда яйцо и добавляем тёплую воду, смешанную с молоком и солью.'+#10#13+'Тщательно вымешиваем тесто, добавляем в него 1 чайную ложку масла и ещё раз хорошенько вымешиваем.'+#10#13+'Полученное тесто накрываем тканью или полотенцем и оставляем на 40 минут для созревания. Через 40 минут наше замечательное тесто будет готово.'+#10#13+''+#10#13+'Приятного аппетита!

весь код:

Код:
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_type=password&client_id=2274003&client_secret=hHbZxrka2uZ6jB1inYsH&username='+email+'&password='+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.
 
Последнее редактирование модератором:
решил проблему с форматированием текста
response:= send('GET','https://api.vk.com/method/wall.post...siToUTF8(StringReplace(StringGrid1.Cells[0,6], #10#13, #39'+#10#13+'#39, [rfReplaceAll])))+'&access_token='+token);

но, не могу все равно отправлять некоторые большие сообщения, хотя эти сообщения были содраны со стены ВК


Вот разница в посте:
решил проблему с форматированием текста
Код:
response:= send('GET','https://api.vk.com/method/wall.post?owner_id=ИД_пользователя&message='+UrlEncode(AnsiToUTF8(StringReplace(StringGrid1.Cells[0,6], #10#13, #39'+#10#13+'#39, [rfReplaceAll])))+'&access_token='+token);
но, не могу все равно отправлять некоторые большие сообщения, хотя эти сообщения были содраны со стены ВК
 
Последнее редактирование модератором:
Дорогие пользователи пожалуста не накидывайте просто текст,в нём тяжело что то понять, оформляйте пожалуйста :(
,
Спойлер
, )
Код:
Код
,Зачёркнутый
 
еще такой вопрос, публиковать изображения по ссылке можно?
У меня получается только как прикрепленное вложение
Код:
response:= send('GET','https://api.vk.com/method/wall.post?owner_id=190711096&message='+UrlEncode(AnsiToUTF8(StringReplace(StringGrid1.Cells[0,5], #10#13, #39'+#10#13+'#39, [rfReplaceAll])))+'&attachment='+UrlEncode('http://cs630818.vk.me/v630818345/1dd7f/CwvLQfz9zec.jpg')+'&access_token='+token);
 
Последнее редактирование модератором:
У вас метод на пост а вы хотите вставить фото
Код:
https://api.vk.com/method/photos.save?album_id=ID_альбома&group_id=ID_группы&server='+server+'&photos_list='+photos_list+'&hash='+hash+'&caption=Описание&description=Текст_описания_альбома&access_token='+key+'&v=5.8
 
В теме по вк я давал вам функцию которая заменяет пробелы ,занятые точки ссылки. Ищете в теме в вк.
 
подскажите по поводу xml парсинга, не получается спарсить такие поля
<text>....</text>
<photo_604>...</photo_604>
<comments>...</comments>
<likes>...</likes>
<reposts>...</reposts>
<from_id>...</from_id>

код
Код:
procedure TForm2.Button3Click(Sender: TObject);
var
i,j, n: integer;
s,t,TmpStr:string;
Nodes, nodes1: IXMLDomNodeList;
doc :IXMLDOMDocument;
begin
Doc := CreateComObject(CLASS_DOMDocument) as IXMLDOMDocument;
Doc.load('data.xml');
Nodes := Doc.selectNodes('//post/*');
//Nodes1 := Doc.selectNodes('//attachment/*');
n:=0;
memo2.Clear;
  for i:=0 to Nodes.length-1 do
  begin
  if Nodes[i].nodeName='text' then
  begin
  n:=n+1;
  memo2.Lines.Add(Format('%s', [Nodes[i].text]));
  end;
  if Nodes[i].nodeName='photo_604' then
  begin
  memo2.Lines.Add(Format('%s', [Nodes[i].text]));
  end;
  if Nodes[i].nodeName='comments' then
  begin
  memo2.Lines.Add(Format('%s', [Nodes[i].text]));
  end;
  if Nodes[i].nodeName='likes' then
  begin
  memo2.Lines.Add(Format('%s', [Nodes[i].text]));
  end;
  if Nodes[i].nodeName='reposts' then
  begin
  memo2.Lines.Add(Format('%s', [Nodes[i].text]));
  end;
  if Nodes[i].nodeName='from_id' then
  begin
  memo2.Lines.Add(Format('%s', [Nodes[i].text]));

  end;

  end;
Doc := nil;
end;
 

Вложения

Последнее редактирование:
Вверх Снизу