2016-06-01 5 views
0

Ich habe einen Server, der eine POST-Anfrage mit JSON behandelt. Es sucht und dekodiert auch Abfrageparameter aus dem URI. Mein Java-Client verwendet derzeit HTTPPost, um den JSON mit der ContentType-Anwendung/json zu senden.Senden von Abfrage-Parameter in einem URI codiert in einem Post, der auch JSON

Ich frage mich, ob URLEncodeUtil Methode Format wäre in der Lage, dies zu erreichen. Mit Ausnahme der Dokumentation erwähnt

geeignet für die Verwendung als eine Anwendung/x-www-form-urlencoded Liste der Parameter in einem HTTP-PUT oder HTTP POST.

Also meine Frage ist 1. Würde dies mit ContenType auf Anwendung/Json festgelegt funktionieren. 2. Gibt es eine andere Möglichkeit, um das zu erreichen, was der Server benötigt, dh: JSON- und Abfrage-Parameter müssen im URI codiert sein.

Antwort

1

Es gibt zwei offizielle Methoden zum Senden von Formulardaten über das (HTML spec). Der zugehörige Wert ist application/x-www-form-urlencoded, der eine ? zusammen mit den Name/Wert-Paaren, die in der URL codiert sind, hinzufügt. Wenn die form-Methode POST ist, wird es die erste Zeile nach der HTTP POST-Anweisung sein.

Alles, was wir mit HTTP in REST-Webdiensten tun, ist gültiges HTTP, aber nicht für HTML. So kann die application/json eine Kombination der application/x-www-form-urlencoded Style-Parameter und der JSON-Nutzlast haben.

Die HTTP-Anforderung wird wie folgt aussehen:

POST /blog/posts?myparam=Something%20Good&token=donotdothis 
Accept: application/json 
Content-Type: application/json 
Content-Length: 57 

{"title":"Hello World!","body":"This is my first post!"} 

Auch hier buchstabiert: http://www.jsonrpc.org/historical/json-rpc-over-http.html

Es ist die ?, die den Anfang der zusätzlichen Parameter markiert. Obwohl dies technisch legal ist, stellt sich die Frage, warum alles, was Sie veröffentlichen müssen, nicht Teil Ihres JSON sein kann. Der Nachteil dieses Ansatzes besteht darin, dass die Abfrageparameter alle Teil Ihrer HTTP-Protokolle sind und sehr gut sichtbar sind. Sie sollten diesen Ansatz auf keinen Fall mit Passwörtern oder anderen personenbezogenen Daten verwenden. Abhängig von den Datenschutzgesetzen in Ihrem Land möchten Sie unnötige Datensätze minimieren, um die Einhaltung der Vorschriften zu vereinfachen.

+0

Danke! Sehr geschätzt! – Pradyot

Verwandte Themen