Как я могу включить знак процента в QUrl

Я новичок в с ++ с этого дня, и мне трудно.

У меня есть строка ниже:

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?

Я попытался удвоить свой знак процента и вставить обратную косую черту.

Любая помощь приветствуется.
Благодарю.

1

Решение

Это оказалось сложной задачей. Вот решение, которое я придумал:

Код

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-адресе имелось одиночное «?».

Рекомендации

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]