Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > ВК API проблема с отправкой текста поста


Автор: darkgrom 4.12.2016, 18:49
Доброго времени суток! Ребят, использую API Вконтакте для создания поста на странице. И все вроде бы хорошо, пост вешается, картинка прикрепляется. Но стоит вставить смайл в отправляемый в параметре message и все накрывается медным тазом. Собственно я догадываюсь почему. в запросах на сервак ВК используются методы со знаком "&", а именно:

Код

http.Send ("&owner_id=" + Form2.userid + "&message=" + RichTextBox1.Text + "&attachments=photo9045867_456239027&publish_date=" + Text6 + "&access_token=" + Form2.token + "&v=5.60")


Так вот смайлы посылаемые в тексте имеют вид ꄐ и сервер думает что "&" это начало еще одного параметра и собственно ругается и не вешает пост.

Есть у кого соображения как обойти это? Всю голову уже сломал smile  и дыру протер в поисковике, а смайлы просто необходимы для красочных постов.

Благодарю. 

Автор: Akina 4.12.2016, 19:19
Никогда (то есть ВООБЩЕ НИКОГДА, если остаётся хоть малейший шанс, что потребуется отладка) не делайте так! Всегда сначала сборка строки (команды, запроса и пр.) в переменной, и только потом передача её на исполнение.

Ну а на форум следует направлять не только и не столько код создания этой строка, сколько собственно реальную строку, которая получилась после сборки и отдаётся на исполнение.

Автор: darkgrom 4.12.2016, 20:36
Akina, извиняюсь. Код еще будет оптимизироваться и сейчас работает и в таком сумбурном виде. На данном этапе сборка в переменную не важна. А вот про сам запрос в чистом виде, забыл( исправляюсь, вот, ниже готовый запрос:

&owner_id=9045867&message=Hello  😊&attachments=photo9045867_456239027&publish_date=1480879920&access_token=******&v=5.60

Hello  😊 - собственно текст, с кодом смайла (&#128522), вот его то ВК и принимает за параметр метода. Если смайл не указывать все работает нормально.

Автор: Akina 4.12.2016, 20:51
А что если поступить как положено, и вместо непонятного символа послать его код?

 smile 
Вот не поленился, слазил на https://vk.com/dev/manuals. И вот какая фигня - ни объекта http, ни метода Send там не описывается...
Нет, я понимаю, что используется некая системная библиотека - но вот догадываться мне лично тупо лень. Как и лень понимать, а собственно к какому из объектов ВК-шного АПИ выполняется обращение.
Да, кстати, а что техподдержка ВК думает по этому поводу?

Автор: darkgrom 4.12.2016, 21:11
Akina? Так я и посылаю его код, это форум его в символ автоматом превратил). Техподдержка ВК уже три недели молчит, перед этим посоветовав сменить язык написания программы на более современный)).

Автор: Akina 4.12.2016, 21:51
Цитата(darkgrom @  4.12.2016,  22:11 Найти цитируемый пост)
Так я и посылаю его код

Не, ты посылаешь символ. А я предлагаю вместо него посылать то, что у буржуинов называется словом entity.

Добавлено @ 21:57
И вот если амперсанд в ентитьке воспринимается движком ВК как разделитель параметров - то это просто обязано быть описано, в т.ч. и как этой проблемы избегать. Ну или назови это багой - пусть отбрёхиваются. В любом случае вопросы надо задавать техподдержке этого самого API.

Кстати, а у самого ВК в какой форме и куда выполняется отправка? сами-то они эти смайлы без проблем с клиента на страницу кладут? вот и полови их гет/пост да посмотри, что они шлют.

Автор: darkgrom 10.12.2016, 14:48
Akina, только что дождался ответа сапорта, но и он - не ответ)
Агент поддержки #1633
Приветствую, Константин!

Да, дело действительно в амперсанде, он придаёт запросу новые смыслы, которые система понять неспособна.
Что если вставлять в пост сами смайлики, как из последнего столбца в таблице https://vk.com/page-47220320_44238969, к примеру?

Естественно, вставлять эти смайлики в TextBox бесполезно, он их не видит.

Но я почти разобрался с проблемой, нашел исходник усовершенствованного textboxa от китайских "коллег" (с поддержкой юникода и доп.символов), научил его сохранять в юникоде и читать текст. Осталось дело за малым малым, отправить и договориться с пониманием ВК сервера)

Вам же желаю хорошего дня и удачи) 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)