v
vlaaad202 марта 2020 г. 6:22

Мистика, да и только))

std::string, libcurl, QString

Всем привет! Сегодня столкнулся с забавным явлением...Либо я чего-то не знаю или не понимаю))
Есть простой код, который выполняет запрос для авторизации, используя libcurl. Так вот, казалось бы два идентичных куска кода, но один из них работает корректно, а другой нет))

a) Нерабочий код, выдается ошибка "Синтаксическая ошибка в запросе"

CURL *curl = curl_easy_init();

QString url("https://identitysso-cert.betfair.com/api/certlogin");

curl_easy_setopt(curl, CURLOPT_URL, url.toStdString().c_str());

\\неинтересная инициализация опций запроса (headers, sslcert, sslkey и т.д)

QString postFields("username=myusername&password=mypassword");

curl_easy_setopt(curl, CURLOPT_POSTFIELDS, postFields.toStdString().c_str());

CURLcode curlResult = curl_easy_perform(curl);

b) Внимание, рабочий код))

CURL *curl = curl_easy_init();

QString url("https://identitysso-cert.betfair.com/api/certlogin");

curl_easy_setopt(curl, CURLOPT_URL, url.toStdString().c_str());

\\неинтересная инициализация опций запроса (headers, sslcert, sslkey и т.д)

std::string postFields = "username=myusername&password=mypassword";

curl_easy_setopt(curl, CURLOPT_POSTFIELDS, postFields.c_str());

CURLcode curlResult = curl_easy_perform(curl);

Важно заметить, что опции запроса заполняются в обоих случаях через QString и дальнейшего перехода к const char* через .toStdString().c_str(). Проблема возникает только в передаче postFields!

Я пытался понять разницу между двумя этими строками, но ее не нашел)
Проводил и посимвольное сравнение, и сравнивал коды соответствующих символов, компилятор считает эти строки одинаковыми, однако запрос почему-то работает только со вторым вариантом.

Эксперты, в чем прикол?))

Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

Вам это нравится? Поделитесь в социальных сетях!

2
Evgenii Legotckoi
  • 2 марта 2020 г. 15:32
  • (ред.)

Добрый вечер.
Просто отпишусь, что посмотрел ваш вопрос. Сам в ступоре. Тоже попробовал сравнения строк, проверку кодов и у меня тоже всё одно и тоже.
Может какая-то оптимизация на уровне компилятора что-то ломает. Не знаю.

    Алексей Внуков
    • 3 марта 2020 г. 3:32

    единственное предположение, что ответ на вопрос кроется где-то в глубине преобразования строк

      Комментарии

      Только авторизованные пользователи могут публиковать комментарии.
      Пожалуйста, авторизуйтесь или зарегистрируйтесь
      ОК

      Qt - Тест 001. Сигналы и слоты

      • Результат:47баллов,
      • Очки рейтинга-6
      A
      • Alena
      • 19 января 2025 г. 22:41

      C++ - Тест 005. Структуры и Классы

      • Результат:58баллов,
      • Очки рейтинга-2
      OI
      • Ora Iro
      • 24 декабря 2024 г. 17:38

      C++ - Тест 001. Первая программа и типы данных

      • Результат:40баллов,
      • Очки рейтинга-8
      Последние комментарии
      ИМ
      Игорь Максимов22 ноября 2024 г. 22:51
      Django - Урок 017. Кастомизированная страница авторизации на Django Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
      Evgenii Legotckoi
      Evgenii Legotckoi1 ноября 2024 г. 0:37
      Django - Урок 064. Как написать расширение для Python Markdown Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
      A
      ALO1ZE19 октября 2024 г. 18:19
      Читалка fb3-файлов на Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
      ИМ
      Игорь Максимов5 октября 2024 г. 17:51
      Django - Урок 064. Как написать расширение для Python Markdown Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
      d
      dblas55 июля 2024 г. 21:02
      QML - Урок 016. База данных SQLite и работа с ней в QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
      Сейчас обсуждают на форуме
      n
      nkly3 января 2025 г. 13:52
      Нужно запретить перемещение только некоторых итемов, остальные перемещать можно. Вопрос решен. Узнать QModelIndex элемента на который мы перетаскиваем другой элемент, можно с помощью функции indexAt(event->position().toPoint()) представления QTreeViev вызываемой в переопр…
      M
      Marsel17 августа 2023 г. 0:26
      OAuth2.0 через VK, получение email Спасибо большое за помощь и простите за то что отнял время своей невнимательностью.
      Evgenii Legotckoi
      Evgenii Legotckoi25 июня 2024 г. 1:11
      добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
      t
      tonypeachey115 ноября 2024 г. 17:04
      google domain [url=https://google.com/]domain[/url] domain [http://www.example.com link title]
      NSProject
      NSProject4 июня 2022 г. 13:49
      Всё ещё разбираюсь с кешем. В следствии прочтения данной статьи. Я принял для себя решение сделать кеширование свойств менеджера модели LikeDislike. И так как установка evileg_core для меня не была возможна, ибо он писался…

      Следите за нами в социальных сетях