Russian Qt Forum

Qt => Работа с сетью => Тема начата: Zusykss от Февраль 08, 2017, 09:51



Название: Как зашифровать кусок, QUrl?
Отправлено: Zusykss от Февраль 08, 2017, 09:51
Это код на  C# : attachments = HttpUtility.UrlEncode(attachments);


Как сделать тоже самое на Qt или средствами C++.

Уже перепробовал кучу способов

но пока успеха не достиг.
Более глубокое описание проблемы по ссылке ниже
https://toster.ru/q/395477?e=4904956#answer_item_965686
Думал использовать - InternetCanonicalizeUr


Название: Re: Как зашифровать кусок, QUrl?
Отправлено: gil9red от Февраль 08, 2017, 09:58
Лучше приведите что содержит attachments и что получилось после HttpUtility.UrlEncode :)

Попробую угадать вам нужен QUrl::toPercentEncoding (http://doc.qt.io/qt-4.8/qurl.html#toPercentEncoding)


Название: Re: Как зашифровать кусок, QUrl?
Отправлено: Zusykss от Февраль 08, 2017, 11:18
Лучше приведите что содержит attachments и что получилось после HttpUtility.UrlEncode :)

Попробую угадать вам нужен QUrl::toPercentEncoding (http://doc.qt.io/qt-4.8/qurl.html#toPercentEncoding)


Я пробовал, этот метод. Все вроде получается, высчитывает MD5 нормально, а вот пишет что ошибка поля attachments=в этом поле лежит текст в UTF-8
ответ такой.
{"error_code":100,"error_msg":"PARAM : Invalid parameter attachment value  : [{ \"media\": [ { \"type\": \"text\", \"text\": \" https://www.ok.ru/group/53307826962634\neewgwegwe\n\n\" } ]}]","error_data":null}


 


Название: Re: Как зашифровать кусок, QUrl?
Отправлено: gil9red от Февраль 08, 2017, 13:03
Все вроде получается, высчитывает MD5 нормально, а вот пишет что ошибка поля attachments=в этом

Кто пишет?

Если на c# работало, то:
Берете значения attachments и HttpUtility.UrlEncode(attachments), запоминаете их (notepad++, привет)
Берете attachments в Qt и пробуете получить то же значение что HttpUtility.UrlEncode(attachments)

А так не понятно что у вас получилось и что не нравится ok :)


Название: Re: Как зашифровать кусок, QUrl?
Отправлено: Zusykss от Февраль 08, 2017, 15:46
Благодарю за ответ, так и сделаю.  ;D


Название: Re: Как зашифровать кусок, QUrl?
Отправлено: Zusykss от Февраль 08, 2017, 20:05
Подскажите как убрать лишнее значения

Первая строка это мой результат с помощью метода QUrl::toPercentEncoding
А второй как должно быть!

%7B%20%20%20%20%22media%22%3A%20%5B%20%20%20%20%20%20%20%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22text%22%2C%20%20%20%20%20%20%20%20%20%20%20%20%22text%22%3A%20%22%D0%92%D0%B0%D0%BA%D0%B0%D0%BD%D1%81%D1%96%D1%8F%20%E2%80%93%20%D0%BF%D0%BE%D0%BC%D1%96%D1%87%D0%BD%D0%B8%D0%BA%20%D0%BA%D1%83%D1%85%D0%B0%D1%80%D1%8F%20%E2%80%93%20%D0%B4%D0%BE%20%D1%80%D0%B5%D1%81%D1%82%D0%BE%D1%80%D0%B0%D0%BD%D1%83%20%D0%B3%D0%BE%D1%82%D0%B5%D0%BB%D1%8E%204*%20%D0%B2%20%D0%9F%D1%80%D0%B0%D0%B7%D1%96%2C%20%D1%82%D1%96%D0%BB%D1%8C%D0%BA%D0%B8%20%D0%B7%20%D0%BE%D1%84%D1%96%D1%86%D1%96%D0%B0%D0%BB%D1%8C%D0%BD%D0%B8%D0%BC%D0%B8%20%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D0%BC%D0%B8.%20%D0%9F%D1%80%D0%B8%D0%B3%D0%BE%D1%82%D1%83%D0%B2%D0%B0%D0%BD%D0%BD%D1%8F%20%D1%81%D1%82%D1%80%D0%B0%D0%B2%20%D0%B7%D0%B0%20%D0%B7%D0%B0%D0%B2%D0%B4%D0%B0%D0%BD%D0%BD%D1%8F%D0%BC%20%D1%88%D0%B5%D1%84-%D0%BA%D1%83%D1%85%D0%B0%D1%80%D1%8F%2C%20%20%D0%B7%D0%B0%20%D0%BC%D0%B5%D0%BD%D1%8E%20%E2%80%93%20%D0%BD%D0%B5%20%D0%BB%D0%B8%D1%88%D0%B5%20%D0%B4%D0%BE%D0%BF%D0%BE%D0%BC%D0%BE%D0%B3%D0%B0%2C%20%D0%B0%D0%BB%D0%B5%20%D0%B9%20%D0%BF%D0%BE%D0%B2%D0%BD%D0%BE%D1%86%D1%96%D0%BD%D0%BD%D0%B5%20%D0%BF%D1%80%D0%B8%D0%B3%D0%BE%D1%82%D1%83%D0%B2%D0%B0%D0%BD%D0%BD%D1%8F.%20%D0%94%D0%BE%D1%81%D0%B2%D1%96%D0%B4%20%D1%94%20%D0%BE%D0%B1%D0%BE%D0%B2%E2%80%99%D1%8F%D0%B7%D0%BA%D0%BE%D0%B2%D0%B8%D0%BC.%20%D0%9E%D0%BF%D0%BB%D0%B0%D1%82%D0%B0%20120%20%D0%9A%D0%BE%D1%80%D1%83%D0%BD%2F%D0%B3%D0%BE%D0%B4.%2B420%20607%20407%20092%2C%20praceje%40gmail.com%22%20%20%20%20%20%20%20%20%7D%20%20%20%20%5D%7D

%7B%20%22media%22%3A%20%5B%20%7B%20%22type%22%3A%20%22text%22%2C%20%22text%22%3A%20%22%20%D0%92%D0%B0%D0%BA%D0%B0%D0%BD%D1%81%D1%96%D1%8F%20%E2%80%93%20%D0%BF%D0%BE%D0%BC%D1%96%D1%87%D0%BD%D0%B8%D0%BA%20%D0%BA%D1%83%D1%85%D0%B0%D1%80%D1%8F%20%E2%80%93%20%D0%B4%D0%BE%20%D1%80%D0%B5%D1%81%D1%82%D0%BE%D1%80%D0%B0%D0%BD%D1%83%20%D0%B3%D0%BE%D1%82%D0%B5%D0%BB%D1%8E%204%2A%20%D0%B2%20%D0%9F%D1%80%D0%B0%D0%B7%D1%96%2C%20%D1%82%D1%96%D0%BB%D1%8C%D0%BA%D0%B8%20%D0%B7%20%D0%BE%D1%84%D1%96%D1%86%D1%96%D0%B0%D0%BB%D1%8C%D0%BD%D0%B8%D0%BC%D0%B8%20%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D0%BC%D0%B8.%20%D0%9F%D1%80%D0%B8%D0%B3%D0%BE%D1%82%D1%83%D0%B2%D0%B0%D0%BD%D0%BD%D1%8F%20%D1%81%D1%82%D1%80%D0%B0%D0%B2%20%D0%B7%D0%B0%20%D0%B7%D0%B0%D0%B2%D0%B4%D0%B0%D0%BD%D0%BD%D1%8F%D0%BC%20%D1%88%D0%B5%D1%84-%D0%BA%D1%83%D1%85%D0%B0%D1%80%D1%8F%2C%20%20%D0%B7%D0%B0%20%D0%BC%D0%B5%D0%BD%D1%8E%20%E2%80%93%20%D0%BD%D0%B5%20%D0%BB%D0%B8%D1%88%D0%B5%20%D0%B4%D0%BE%D0%BF%D0%BE%D0%BC%D0%BE%D0%B3%D0%B0%2C%20%D0%B0%D0%BB%D0%B5%20%D0%B9%20%D0%BF%D0%BE%D0%B2%D0%BD%D0%BE%D1%86%D1%96%D0%BD%D0%BD%D0%B5%20%D0%BF%D1%80%D0%B8%D0%B3%D0%BE%D1%82%D1%83%D0%B2%D0%B0%D0%BD%D0%BD%D1%8F.%20%D0%94%D0%BE%D1%81%D0%B2%D1%96%D0%B4%20%D1%94%20%D0%BE%D0%B1%D0%BE%D0%B2%E2%80%99%D1%8F%D0%B7%D0%BA%D0%BE%D0%B2%D0%B8%D0%BC.%20%D0%9E%D0%BF%D0%BB%D0%B0%D1%82%D0%B0%20120%20%D0%9A%D0%BE%D1%80%D1%83%D0%BD%2F%D0%B3%D0%BE%D0%B4.%0A%2B420%20607%20407%20092%2C%20praceje%40gmail.com%22%20%7D%20%5D%7D


Название: Re: Как зашифровать кусок, QUrl?
Отправлено: gil9red от Февраль 08, 2017, 20:26
У вас отличия в входных строках: в первой я увидел больше символов пробелов -- %20

Если обратно привести, то получается:

Первая:
{    "media": [        {            "type": "text",            "text": "Вакансія – помічник кухаря – до ресторану готелю 4* в Празі, тільки з офіціальними документами. Приготування страв за завданням шеф-кухаря,  за меню – не лише допомога, але й повноцінне приготування. Досвід є обов’язковим. Оплата 120 Корун/год.+420 607 407 092, praceje@gmail.com"        }    ]}

Вторая:
{ "media": [ { "type": "text", "text": " Вакансія – помічник кухаря – до ресторану готелю 4* в Празі, тільки з офіціальними документами. Приготування страв за завданням шеф-кухаря,  за меню – не лише допомога, але й повноцінне приготування. Досвід є обов’язковим. Оплата 120 Корун/год.
+420 607 407 092, praceje@gmail.com" } ]}

Причем, во втором json еще перед +420 затесался символ переноса строки


Название: Re: Как зашифровать кусок, QUrl?
Отправлено: Zusykss от Февраль 08, 2017, 20:40
Странно потому, что строки одинаковые, как так они там появляются.
// мой запрос
%7B%20%20%20%20%22media%22%3A%20%5B%20%20%20%20%20%20%20%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22text%22%2C%20%20%20%20%20%20%20%20%20%20%20%20%22text%22%3A%20%22%D0%92%D0%B0%D0%BA%D0%B0%D0%BD%D1%81%D1%96%D1%8F%20%E2%80%93%20%D0%BF%D0%BE%D0%BC%D1%96%D1%87%D0%BD%D0%B8%D0%BA%20%D0%BA%D1%83%D1%85%D0%B0%D1%80%D1%8F%20%E2%80%93%20%D0%B4%D0%BE%20%D1%80%D0%B5%D1%81%D1%82%D0%BE%D1%80%D0%B0%D0%BD%D1%83%20%D0%B3%D0%BE%D1%82%D0%B5%D0%BB%D1%8E%204*%20%D0%B2%20%D0%9F%D1%80%D0%B0%D0%B7%D1%96%2C%20%D1%82%D1%96%D0%BB%D1%8C%D0%BA%D0%B8%20%D0%B7%20%D0%BE%D1%84%D1%96%D1%86%D1%96%D0%B0%D0%BB%D1%8C%D0%BD%D0%B8%D0%BC%D0%B8%20%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D0%BC%D0%B8.%20%D0%9F%D1%80%D0%B8%D0%B3%D0%BE%D1%82%D1%83%D0%B2%D0%B0%D0%BD%D0%BD%D1%8F%20%D1%81%D1%82%D1%80%D0%B0%D0%B2%20%D0%B7%D0%B0%20%D0%B7%D0%B0%D0%B2%D0%B4%D0%B0%D0%BD%D0%BD%D1%8F%D0%BC%20%D1%88%D0%B5%D1%84-%D0%BA%D1%83%D1%85%D0%B0%D1%80%D1%8F%2C%20%20%D0%B7%D0%B0%20%D0%BC%D0%B5%D0%BD%D1%8E%20%E2%80%93%20%D0%BD%D0%B5%20%D0%BB%D0%B8%D1%88%D0%B5%20%D0%B4%D0%BE%D0%BF%D0%BE%D0%BC%D0%BE%D0%B3%D0%B0%2C%20%D0%B0%D0%BB%D0%B5%20%D0%B9%20%D0%BF%D0%BE%D0%B2%D0%BD%D0%BE%D1%86%D1%96%D0%BD%D0%BD%D0%B5%20%D0%BF%D1%80%D0%B8%D0%B3%D0%BE%D1%82%D1%83%D0%B2%D0%B0%D0%BD%D0%BD%D1%8F.%20%D0%94%D0%BE%D1%81%D0%B2%D1%96%D0%B4%20%D1%94%20%D0%BE%D0%B1%D0%BE%D0%B2%E2%80%99%D1%8F%D0%B7%D0%BA%D0%BE%D0%B2%D0%B8%D0%BC.%20%D0%9E%D0%BF%D0%BB%D0%B0%D1%82%D0%B0%20120%20%D0%9A%D0%BE%D1%80%D1%83%D0%BD%2F%D0%B3%D0%BE%D0%B4.%2B420%20607%20407%20092%2C%20praceje%40gmail.com%22%20%20%20%20%20%20%20%20%7D%20%20%20%20%5D%7D

что не так пишу, чего удаляет еще %22%
attach.replace(QRegExp("[%20]{2,}"),"%20");
// пробую регуляркой удалить лишнее
%7B%20media%203A%205B%207B%20type%203A%20text%20C%20text%203A%20D%209%20D%20B%20D%20BA%D%20B%20D%20BD%D1%81%D1%96%D1%8F%20E%208%2093%20D%20BF%D%20BE%D%20BC%D1%96%D1%87%D%20BD%D%20B8%D%20BA%20D%20BA%D1%83%D1%85%D%20B%20D1%8%20D1%8F%20E%208%2093%20D%20B4%D%20BE%20D1%8%20D%20B5%D1%81%D1%8%20D%20BE%D1%8%20D%20B%20D%20BD%D1%83%20D%20B3%D%20BE%D1%8%20D%20B5%D%20BB%D1%8E%204%20A%20D%20B%20D%209F%D1%8%20D%20B%20D%20B7%D1%96%20C%20D1%8%20D1%96%D%20BB%D1%8C%D%20BA%D%20B8%20D%20B7%20D%20BE%D1%84%D1%96%D1%86%D1%96%D%20B%20D%20BB%D1%8C%D%20BD%D%20B8%D%20BC%D%20B8%20D%20B4%D%20BE%D%20BA%D1%83%D%20BC%D%20B5%D%20BD%D1%8%20D%20B%20D%20BC%D%20B8.%20D%209F%D1%8%20D%20B8%D%20B3%D%20BE%D1%8%20D1%83%D%20B%20D%20B%20D%20BD%D%20BD%D1%8F%20D1%81%D1%8%20D1%8%20D%20B%20D%20B%20D%20B7%D%20B%20D%20B7%D%20B%20D%20B%20D%20B4%D%20B%20D%20BD%D%20BD%D1%8F%D%20BC%20D1%88%D%20B5%D1%84-%D%20BA%D1%83%D1%85%D%20B%20D1%8%20D1%8F%20C%20D%20B7%D%20B%20D%20BC%D%20B5%D%20BD%D1%8E%20E%208%2093%20D%20BD%D%20B5%20D%20BB%D%20B8%D1%88%D%20B5%20D%20B4%D%20BE%D%20BF%D%20BE%D%20BC%D%20BE%D%20B3%D%20B%20C%20D%20B%20D%20BB%D%20B5%20D%20B9%20D%20BF%D%20BE%D%20B%20D%20BD%D%20BE%D1%86%D1%96%D%20BD%D%20BD%D%20B5%20D%20BF%D1%8%20D%20B8%D%20B3%D%20BE%D1%8%20D1%83%D%20B%20D%20B%20D%20BD%D%20BD%D1%8F.%20D%2094%D%20BE%D1%81%D%20B%20D1%96%D%20B4%20D1%94%20D%20BE%D%20B1%D%20BE%D%20B%20E%208%2099%D1%8F%D%20B7%D%20BA%D%20BE%D%20B%20D%20B8%D%20BC.%20D%209E%D%20BF%D%20BB%D%20B%20D1%8%20D%20B%201%20D%209A%D%20BE%D1%8%20D1%83%D%20BD%20F%D%20B3%D%20BE%D%20B4.%20A%20B4%20607%20407%209%20C%20praceje%40gmail.com%207D%205D%7D

// правильный ответ
%7B%20%22media%22%3A%20%5B%20%7B%20%22type%22%3A%20%22text%22%2C%20%22text%22%3A%20%22%20%D0%92%D0%B0%D0%BA%D0%B0%D0%BD%D1%81%D1%96%D1%8F%20%E2%80%93%20%D0%BF%D0%BE%D0%BC%D1%96%D1%87%D0%BD%D0%B8%D0%BA%20%D0%BA%D1%83%D1%85%D0%B0%D1%80%D1%8F%20%E2%80%93%20%D0%B4%D0%BE%20%D1%80%D0%B5%D1%81%D1%82%D0%BE%D1%80%D0%B0%D0%BD%D1%83%20%D0%B3%D0%BE%D1%82%D0%B5%D0%BB%D1%8E%204%2A%20%D0%B2%20%D0%9F%D1%80%D0%B0%D0%B7%D1%96%2C%20%D1%82%D1%96%D0%BB%D1%8C%D0%BA%D0%B8%20%D0%B7%20%D0%BE%D1%84%D1%96%D1%86%D1%96%D0%B0%D0%BB%D1%8C%D0%BD%D0%B8%D0%BC%D0%B8%20%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D0%BC%D0%B8.%20%D0%9F%D1%80%D0%B8%D0%B3%D0%BE%D1%82%D1%83%D0%B2%D0%B0%D0%BD%D0%BD%D1%8F%20%D1%81%D1%82%D1%80%D0%B0%D0%B2%20%D0%B7%D0%B0%20%D0%B7%D0%B0%D0%B2%D0%B4%D0%B0%D0%BD%D0%BD%D1%8F%D0%BC%20%D1%88%D0%B5%D1%84-%D0%BA%D1%83%D1%85%D0%B0%D1%80%D1%8F%2C%20%20%D0%B7%D0%B0%20%D0%BC%D0%B5%D0%BD%D1%8E%20%E2%80%93%20%D0%BD%D0%B5%20%D0%BB%D0%B8%D1%88%D0%B5%20%D0%B4%D0%BE%D0%BF%D0%BE%D0%BC%D0%BE%D0%B3%D0%B0%2C%20%D0%B0%D0%BB%D0%B5%20%D0%B9%20%D0%BF%D0%BE%D0%B2%D0%BD%D0%BE%D1%86%D1%96%D0%BD%D0%BD%D0%B5%20%D0%BF%D1%80%D0%B8%D0%B3%D0%BE%D1%82%D1%83%D0%B2%D0%B0%D0%BD%D0%BD%D1%8F.%20%D0%94%D0%BE%D1%81%D0%B2%D1%96%D0%B4%20%D1%94%20%D0%BE%D0%B1%D0%BE%D0%B2%E2%80%99%D1%8F%D0%B7%D0%BA%D0%BE%D0%B2%D0%B8%D0%BC.%20%D0%9E%D0%BF%D0%BB%D0%B0%D1%82%D0%B0%20120%20%D0%9A%D0%BE%D1%80%D1%83%D0%BD%2F%D0%B3%D0%BE%D0%B4.%0A%2B420%20607%20407%20092%2C%20praceje%40gmail.com%22%20%7D%20%5D%7D


Название: Re: Как зашифровать кусок, QUrl?
Отправлено: gil9red от Февраль 08, 2017, 22:48
Странные у вас json используются... Нехорошо что у них пробелы между элементами
Вам нужно к одному виду приводить строки json, иначе фигня будет происходить

что не так пишу, чего удаляет еще %22%
attach.replace(QRegExp("[%20]{2,}"),"%20");
Тут все просто: в квадратных скобках вы указываете вариации символов в встречаемой строке, правильнее было бы: (%20){2,}


Название: Re: Как зашифровать кусок, QUrl?
Отправлено: Zusykss от Февраль 09, 2017, 23:36
Странные у вас json используются... Нехорошо что у них пробелы между элементами
Вам нужно к одному виду приводить строки json, иначе фигня будет происходить

что не так пишу, чего удаляет еще %22%
attach.replace(QRegExp("[%20]{2,}"),"%20");
Тут все просто: в квадратных скобках вы указываете вариации символов в встречаемой строке, правильнее было бы: (%20){2,}




Благодарю за подсказки воспользовался для шифрования QUrl::toPercentEncoding(at,"", "/,,/,\\,?,:,@,&,=,+,$,#,-,_,.,!,~,*,',(,)" );


А другая проблема была, что JSON файл не принимает
Спец символы JSON

\b  Backspace (ascii code 08)
\f  Form feed (ascii code 0C)
\n  New line
\r  Carriage return
\t  Tab
\"  Double quote
\\  Backslash character

Просто заменил символы \n на \\n  и тд.


Название: Re: Как зашифровать кусок, QUrl?
Отправлено: gil9red от Февраль 10, 2017, 08:26
Попробуйте их экранировать слешем. На крайний вариант содержимое можно кодировать в base64, но в него обычно байтовые массивы помещают (например, картинки)