2016-10-26 6 views
0

Possible duplicate QuestionQtのQUrlQueryは、私は次のようにクライアントに電子メールで送信されますリセットリンク/トークンを生成していますQbytearrayトークン

を抽出します。

QByteArray token; 
    token.resize(crypto_pwhash_SALTBYTES); 
    randombytes_buf(token.data(), crypto_pwhash_SALTBYTES); 

    QUrlQuery token_url("http://localhost:8080/reset/staff"); 
    token_url.addQueryItem("token", token); 
    token_url.query(QUrl::FullyEncoded).toUtf8(); 

これは正しい出力を生成するために表示されます。私はトークンQByteArrayを必要とする保存されたハッシュに対してリセット要求を認証するために

http://localhost:8080/reset/staff&token=pc%22%EF%BF%BD%C6%9Fsktx%EF%BF%BD!%06t%5C%0B 

を。

QByteArray path = request.getPath(); 
qDebug() << path; 

QUrlQuery token_url(path); 
QString token(token_url.queryItemValue("token")); 
qDebug() << token; 

qDebug() << QUrl::fromPercentEncoding(path); 

Firefoxで貼り付けられたURLを含む出力は、私は私はおそらく犬unsigned char型のConverstionをやっている理解

"/reset/staff&token=pc\"\xEF\xBF\xBD\xC6\x9Fsktx\xEF\xBF\xBD!\x06t\\\x0B" 
"pc\"�Ɵsktx�!%06t\\%0B" 
"/reset/staff&token=pc\"�Ɵsktx�!\u0006t\\\u000B" 

ちんぷんかんぷんです。

QBytearraysをQUrlQueryに出入りするための洗練された方法は何ですか?

私はいくつかのプログラマーが独自のURLパーサーを書いているのを見たことがありますが、それは過剰と思われます。

答えて

0

[解決済み]問題はQtWebAppsで発生しました。HttpRequest :: decodeRequestParams() URLがさらに2回デコードされていました。期待通りにQUrlQuery.query()が静かに動作しません。

K.I.S.Sは、誰もがよりエレガントな解決策を持っている場合、私は改善に開いています手動受信側

split the query from "?" 
then split at "&" into key=value pairs 
then split at "=" 
finally QByteArray::fromPercentEncoding(key) 
finally QByteArray::fromPercentEncoding(value) 

QByteArray url("http://localhost:8080/reset/staff?"); 
url.append("&token="+token.toPercentEncoding()); 

qDebug() << url; 

をあなたのURLをエンコードします。

関連する問題