0 / 0 / 1
Регистрация: 07.06.2019
Сообщений: 87
1

Libcurl + кириллица + discord API

02.02.2022, 08:00. Показов 1893. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! У меня возникла такая проблема: когда я пытаюсь послать личное сообщение на кириллице через c++ и libcurl пользователю discord, то у меня не отсылается сообщение, а от сервера приходит ответ 400 Bad Request. Если я отправлю сообщение на латинице, оно отсылается и сервер возвращает 200 OK. Листинг функций с сообщением на кириллице и латинице прилагаю.
C++
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
std::string SendDM(std::string url, std::string token, const char* text)
{
    std::list<std::string> h;
    h.push_back("Authorization: " + token);
    h.push_back("Content-Type: application/json");
 
    CURL* curl;
    std::string res;
 
    curl = curl_easy_init();
    if (curl)
    {
        struct curl_slist* headers = NULL;
 
        for (auto& each : h) {
            headers = curl_slist_append(headers, each.c_str());
        }
 
        curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
        curl_easy_setopt(curl, CURLOPT_URL, url);
        curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "{\"content\": \"latinica\"}"); //всё работает, 200 OK
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_to_string);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, &res);
        curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
 
        curl_easy_perform(curl);
 
        curl_easy_cleanup(curl);
        curl_slist_free_all(headers);
    }
 
    return res;
}
C++
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
std::string SendDM(std::string url, std::string token, const char* text)
{
    std::list<std::string> h;
    h.push_back("Authorization: " + token);
    h.push_back("Content-Type: application/json");
 
    CURL* curl;
    std::string res;
 
    curl = curl_easy_init();
    if (curl)
    {
        struct curl_slist* headers = NULL;
 
        for (auto& each : h) {
            headers = curl_slist_append(headers, each.c_str());
        }
 
        curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
        curl_easy_setopt(curl, CURLOPT_URL, url);
        curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "{\"content\": \"кириллица\"}"); //сообщение не отправляется, 400 Bad Request
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_to_string);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, &res);
        curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
 
        curl_easy_perform(curl);
 
        curl_easy_cleanup(curl);
        curl_slist_free_all(headers);
    }
 
    return res;
}
Добавлено через 3 минуты
Скажите, может надо как-то изменить кодировку запроса (discord принимает UTF8)
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.02.2022, 08:00
Ответы с готовыми решениями:

Подсчитать количество вхождений буквы (кириллица) в строку (кириллица)
Суть такая: по требованию программы ввести строку символов (обыкновенный текст, кириллица(!!!)) и...

Libcurl + QT Creator - Какую версию libcurl качать для Windows
Пытаюсь подружить Curl и QT Creator Подскажите пожалуйста какую версию libcurl качать для...

POST запрос библиотекой libcurl | Vk Api
Здравствуйте. Мне нужно получить информацию через вк апи с помощью POST запроса (строка слишком...

Проблема с Post запросом libcurl Poloniex API
Всем доброго времени дня! Пытаюсь взаимодействовать с Poloniex API, но уже второй день ловлю одну...

Api для Discord
Здравствуйте,подскажите пожалуйста api для Дискорда на python и желательно статьи,документацию к...

5
6 / 5 / 1
Регистрация: 18.01.2022
Сообщений: 112
02.02.2022, 12:38 2
Цитата Сообщение от HURROLED Посмотреть сообщение
... то у меня не отсылается сообщение, а от сервера приходит ответ 400 Bad Request.
Ну так, если от сервера пришло сообщение, значит Сервер - получил ваше сообщение, а значит сообщение отослалось.
Вопрос - почему сервер ответил "400 Bad Request".
Вопрос - что именно ожидал или ожидает сервер от Вас.
0
0 / 0 / 1
Регистрация: 07.06.2019
Сообщений: 87
03.02.2022, 07:00  [ТС] 3
Имеется в виду сообщение в самом дискорде, а не сообщение его api-серверу

Добавлено через 2 минуты
Мне кажется, сервер ожидает от меня запрос в UTF8, а я ему посылаю в какой-то другой кодировке.
0
18822 / 9826 / 2401
Регистрация: 30.01.2014
Сообщений: 17,260
03.02.2022, 08:08 4
Лучший ответ Сообщение было отмечено HURROLED как решение

Решение

HURROLED, так и есть. Кодировка char литерала соответствует кодировке исходника. В какой кодировке у вас исходник?
1
0 / 0 / 1
Регистрация: 07.06.2019
Сообщений: 87
03.02.2022, 17:04  [ТС] 5
Спасибо! Сохранил файл в UTF8 и всё работает так, как надо!
0
737 / 527 / 130
Регистрация: 31.05.2013
Сообщений: 2,974
Записей в блоге: 3
04.04.2022, 16:36 6
HURROLED, Я как понял у вас все получилось, не поделитесь исходником авторизации?
0
04.04.2022, 16:36
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.04.2022, 16:36
Помогаю со студенческими работами здесь

Создание Вебхуков discord API
Решил сделать канал со статистикой о сервере через вебхук. Мой код: import discord class...

Как получить аватарку и имя пользователя Discord API Oauth2
Здравствуйте, сделал бота который авторизует пользователя. Бот получает его аватарку и имя. Как...

API JSON и кириллица
Всем доброго вечера! Версия Laravel: 7 Не пинайте сильно за вопрос, ибо только начинаю...

Работа с голосовыми каналами в Discord (Discord.Net v 2.0.1)
Интересует вопрос о вызове аудиопотока в Discord и выгрузке в этот аудиопоток музыки. Попытки...

Discord.py бот для Discord
наверное видели как у ботов в Discord написано 'играет в ...' как это зделать на питоне, нашел код...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru