Я новичок в с ++ с этого дня, и мне трудно.
У меня есть строка ниже:
const QUrl command("http://192.168.11.11/subdomain/letters?t=somekeyword&p=%01")
Но когда отправляется «команда» QUrl, используемая в QNetworkAccessManager, она фактически отправляется с добавлением 25 после знака%.
Теперь я понимаю, что QUrl находится в TolerantMode и добавляет, думая, что это ошибка ввода пользователя.
Нежелательный результат:
http://192.168.11.11/subdomain/letters?t=somekeyword&p=%2501
Как я могу предотвратить изменение моего URL?
Я попытался удвоить свой знак процента и вставить обратную косую черту.
Любая помощь приветствуется.
Благодарю.
Это оказалось сложной задачей. Вот решение, которое я придумал:
Код
QByteArray rawQuery("t=somekeyword&p=%01");
QUrl command("http://192.168.11.11/subdomain/letters");
command.setEncodedQuery(rawQuery);
std::cout << command.toEncoded().data();
Результат
http://192.168.11.11/subdomain/letters?t=somekeyword&p=%01
Заметки
Решение опирается на некоторое поведение, описанное в setEncodedQuery, в котором говорится
Устанавливает строку запроса URL для запроса. Строка вставляется как есть, и дальнейшее кодирование не выполняется при вызове toEncoded ().
Эта функция полезна, если вам нужно передать строку запроса, которая не вписывается в шаблон ключ-значение или использует схему для кодирования специальных символов, отличную от предложенной QUrl.
Передача значения QByteArray () в запрос (нулевой QByteArray) полностью сбрасывает запрос. Тем не менее, передача значения QByteArray («») установит в запросе пустое значение, как если бы в исходном URL-адресе имелось одиночное «?».
Рекомендации
Других решений пока нет …