Utilisation de la chaîne JSON dans l'en-tête HTTP
Récemment, j'ai couru dans un étrange problème avec l'en-tête http d'utilisation ( Ajout de plusieurs personnalisée-têtes de requête http mystère) Pour éviter le problème à l'époque, j'ai mis les champs en chaîne json et d'ajouter que la chaîne json dans l'en-tête au lieu d'ajouter ces champs pour séparer les en-têtes http.
Par exemple, au lieu de
request.addHeader("UserName", mUserName);
request.addHeader("AuthToken", mAuthorizationToken);
request.addHeader("clientId","android_client");
J'ai créé une chaîne json et l'ajouter à l'en-tête unique
String jsonStr="{\"UserName\":\"myname\",\"AuthToken\":\"123456\",\"clientId\":\"android_client\"}";
request.addHeader("JSonStr",jsonStr);
Depuis que je suis nouveau à l'écriture de Repos et de traiter avec le Http trucs, je ne sais pas si mon utilisation est la bonne ou pas. J'aimerais avoir un aperçu de ce.
Quelques liens
http://lists.w3.org/Archives/Public/ietf-http-wg/2011OctDec/0133.html
source d'informationauteur Win Myo Htet
Vous devez vous connecter pour publier un commentaire.
OuiJSON est autorisé dans les en-têtes HTTP.
Selon la HTTP spec (qui fait référence à la ARPA internet des messages spec pour le format d'en-tête), la seule contrainte est que votre en-tête champ-corps doit être au format ASCII, et ne doit pas contenir de CR ou LF caractères (c'est à dire de nouvelles lignes).
Depuis près de tous JSON encodeurs de coder caractères CR et LF "\r" et "\n" et d'encoder les caractères non-ASCII (par exemple "é" devient "\u00e9"), ce n'est pas un problème. Vérifiez la documentation de votre codeur pour être sûr.
Ladite ARPA spec (RFC 822) a la description de ce cas d'utilisation:
Aussi, RFC 822 est explicite qu'il n'y a pas de longueur de contraintes:
Une manière générale, vous n'envoyez pas de données dans l'en-tête pour une API REST. Si vous avez besoin d'envoyer beaucoup de données, il est préférable d'utiliser un HTTP POST et envoyer les données dans le corps de la demande. Mais il semble que vous essayez de transmettre des informations d'identification dans l'en-tête, un peu de REPOS de l'API de faire de l'utiliser. Voici un exemple pour transmettre les informations de connexion dans une API REST pour un service appelé SMSIfiedqui vous permet d'envoyer des messages texte SMS via Internet. Cet exemple est l'aide de l'authentification de base, qui est une technique courante pour le REPOS de l'API. Mais vous aurez besoin d'utiliser SSL avec cette technique pour assurer la sécurité. Voici un exemple sur la façon de mettre en œuvre l'authentification de base avec WCF et de REPOS.
De ce que je comprends à l'aide d'une chaîne json dans l'en-tête option n'est pas tant un abus de l'utilisation que l'utilisation de http SUPPRIMER pour http GET, donc il y a même eu une proposition est d'utiliser json en-tête http. Bien sûr, plus approfondie idées sont toujours les bienvenus et acceptés réponse est encore à faire.
Base64encode avant de l'envoyer. Juste comme la façon dont JSON Web Jeton le faire.
Voici un NodeJs Exemple:
Décoder lorsque vous avez besoin de la lecture: