Wie unterdrücken die url-Codierung mit spring boot
Habe ich eine GET - /POST-API mit Spring boot hat eine http-url-parameter sagen refid. Jetzt ist dieser parameter bereits codiert vor dem Aufruf von GET/POST-Anfrage
z.B. http://localhost:8080/users/TESTFNkJXiQAH%2FJBKxigBx
Aber, wenn ich die Bereitstellung dieses durch den Frühling Starten, die verschlüsselte refid ist erneut codiert und die refid änderungen. D. H. es wird:
http://localhost:8080/users/TESTFNkJXiQAH%252FJBKxigBx
Möchte ich zu unterdrücken, 2. die Codierung von Spring boot. Kann mir jemand raten hier?
Wie erzeugen Sie diese url?
refid ist die verschlüsselte form von wenigen Parametern, die dann verschlüsselt werden und wir dann hängen Sie an die URL und rufen Sie einen GET-oder POST mit.
Warum nicht verwenden Sie URL.decodieren auf diese parameter?
Also ich entschlüsselt Sie vor dem Aufruf finden:
Ich poste meinen code als Antwort, als Kommentare nicht formatieren code richtig.
refid ist die verschlüsselte form von wenigen Parametern, die dann verschlüsselt werden und wir dann hängen Sie an die URL und rufen Sie einen GET-oder POST mit.
Warum nicht verwenden Sie URL.decodieren auf diese parameter?
Also ich entschlüsselt Sie vor dem Aufruf finden:
refId = URLDecoder.decode(RefId, "UTF-8"); List<TestObject> objList = TestObjectDao.findByrefId( refId);
Noch die url kommt als Doppel-codiert, d.h. genau wie im letzten Fall.Ich poste meinen code als Antwort, als Kommentare nicht formatieren code richtig.
InformationsquelleAutor user5423592 | 2016-10-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Weiß nicht, ob Sie immer noch dieses problem, oder Sie finden heraus, warum es passiert, aber da war ich zu erklären versucht jemand das Phänomen, schaute ich ob es schon eine gute Erklärung. Aber da Sie auch bitten, und ich habe nicht gefunden, hier ist meine Antwort.
So codieren Sie Ihre refid
bevor Sie es über die url, welche dann gibst du in einem browser. Nun, dies ist nur die kodierte refid. Beim Aufruf über eine URL direkt Sie haben, codieren Sie es wieder, nach den HTML-und URL-Kodierung-standards. Das ist, warum die doppelte Flucht. Lesen Sie auch diese. E. g. also, wenn Ihr refid sieht wie folgt aus
und codieren Sie es schalten Sie es in
nun, wenn Sie auch wollen, um es zu übergeben, die durch eine url auf die browser, die Sie haben würden, codieren Sie es wieder.
Aber wenn ein Dienst, der Eine ist mit diesem service und service A kodiert diese refid richtig, dann werden Sie nicht dieses problem haben. Es geschieht nur, weil Sie versuchen, rufen Sie diese api-Endpunkt über den browser.
Natürlich nehme ich als selbstverständlich an, dass Sie dies tun:
in Ihrem controller
dann ist es besser, Sie übergeben Ihre parameter als POST-request, dann brauchen Sie nicht zu Kodieren überhaupt
Path-Parameter sind entscheidend für die REST-Methoden. Ich fand manche Frage hier, aber es gibt keine richtige Antwort. Ich glaube, ich brauche zu verwenden AOP manuell zu entschlüsseln, params kommentiert von @PathVariable für String-Typ.
InformationsquelleAutor Alex P.
Übergeben Sie die decodierte URL an Erster Stelle anstatt das zu tun, unbequeme Dinge zu stoppen doppelte Verschlüsselung.
Sie erhalten bereits dekodierte Feld in rest-controller.
Beispiel, wenn Sie passieren http://www.xyz.com?name=nilesh%20salpe
erhalten Sie den Wert von param name als "nilesh salpe" und nicht "nilesh%20salpe"
InformationsquelleAutor Neel Salpe
Dies ist ein grundlegendes Beispiel der URLDecoder:
Ein weiteres problem das ich sehe ist, dass ich nicht finden konnte, die codiert refid in meiner Anwendung Debuggen, aber die URL zeigt % % - - - 25. Der code, wo ich versuche zu entschlüsseln, befindet sich auf der original refid, die ich weitergegeben.
Wie man die refid von URL?
Ich bearbeitet meine Antwort zu extrahieren, die refId von URL
InformationsquelleAutor Alexey Soshin