J'essaie d'écrire une classe Java pour me connecter à un certain site Web. Les données envoyées dans la demande POST pour se connecter sont
user%5Blogin%5D=uesrname&user%5Bpassword%5D=123456
Je suis curieux de savoir ce que %5B
et %5D
signifient dans la clé login utilisateur .
Comment encoder ces données?
Selon cette réponse, sur ici : str='foo%20%5B12%5D'
code foo [12]
:
%20 is space
%5B is '['
and %5D is ']'
Ceci s'appelle percent encoding et est utilisé pour encoder des caractères spéciaux dans les valeurs du paramètre url.
EDIT Au fait, alors que je lisais https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/encodeURI#Description , je viens juste de comprendre pourquoi tant de gens font la même recherche. Voir la note au bas de la page:
Notez également que si vous souhaitez suivre la plus récente RFC3986 pour les URL, faire des crochets réservés (pour IPv6) et donc pas encodé lors de la création d’un élément pouvant faire partie d’une URL (comme un hôte .__), les éléments suivants peuvent aider.
function fixedEncodeURI (str) {
return encodeURI(str).replace(/%5B/g, '[').replace(/%5D/g, ']');
}
J'espère que cela aidera les gens à résoudre leurs problèmes lorsqu'ils tomberont sur cette question.
Ils représentent [
et ]
. Le codage est appelé "Codage URL" .
[]
est remplacé par %5B%5D
au moment du codage de l'URL.
Eh bien, c'est l'encodage url habituel
Donc, ils représentent [
, respectivement ]
Pour jeter un coup d'œil rapide, vous pouvez décoder/décoder en utilisant cet outil en ligne .
Les données auraient probablement été publiées à l'origine à partir d'un formulaire Web ressemblant un peu à ceci (mais probablement beaucoup plus compliqué):
<form action="http://example.com" method="post">
User login <input name="user[login]" /><br />
User password <input name="user[password]" /><br />
<input type="submit" />
</form>
Si la méthode était "get" au lieu de "post", un clic sur le bouton d'envoi vous mènerait à une URL ressemblant un peu à ceci:
http://example.com/?user%5Blogin%5D=username&user%5Bpassword%5D=123456
ou:
http://example.com/?user[login]=username&user[password]=123456
Le serveur Web de l'autre extrémité prendra probablement les paramètres user[login]
et user[password]
et les transformera en un objet user
avec des champs login
et password
contenant ces valeurs.