So senden Sie ein array mit Feder RestTemplate?
Wie versende ich eine array-parameter mit Feder RestTemplate?
Dies ist die server-seitige Implementierung:
@RequestMapping(value = "/train", method = RequestMethod.GET)
@ResponseBody
public TrainResponse train(Locale locale, Model model, HttpServletRequest request,
@RequestParam String category,
@RequestParam(required = false, value = "positiveDocId[]") String[] positiveDocId,
@RequestParam(required = false, value = "negativeDocId[]") String[] negativeDocId)
{
...
}
Dies ist, was ich versucht habe:
Map<String, Object> map = new HashMap<String, Object>();
map.put("category", parameters.getName());
map.put("positiveDocId[]", positiveDocs); //positiveDocs is String array
map.put("negativeDocId[]", negativeDocs); //negativeDocs is String array
TrainResponse response = restTemplate.getForObject("http://localhost:8080/admin/train?category={category}&positiveDocId[]={positiveDocId[]}&negativeDocId[]={negativeDocId[]}", TrainResponse.class, map);
Im folgenden wird der aktuelle request-URL, die offensichtlich falsch:
http://localhost:8080/admin/train?category=spam&positiveDocId%5B%5D=%5BLjava.lang.String;@4df2868&negativeDocId%5B%5D=%5BLjava.lang.String;@56d5c657`
Habe versucht zu suchen aber konnte keine Lösung finden. Alle Hinweise wären sehr willkommen.
InformationsquelleAutor Stanley | 2013-01-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Spring UriComponentsBuilder funktioniert der trick und ermöglicht auch für Variable expansion. Unter der Annahme, dass Sie möchten, übergeben Sie ein array von strings als Parameter "attr" zu einer Ressource, für die Sie nur eine URI-Pfad-variable:
Sonst, wenn Sie brauchen, um zu definieren, eine URI, soll erweitert werden zur Laufzeit, und Sie wissen nicht, die Größe des Arrays im Voraus, verwenden Sie eine http://tools.ietf.org/html/rfc6570 UriTemplate mit {?Schlüssel*} Platzhalter und erweitern Sie es mit der UriTemplate Klasse aus https://github.com/damnhandy/Handy-URI-Templates.
Für andere Sprachen als Java sehen https://code.google.com/p/uri-templates/wiki/Implementations.
InformationsquelleAutor dschulten
Landete ich Bau die URL per Schleife über die collection.
InformationsquelleAutor Stanley
Versuchen, diese
Ändern Ihre Anfrage Zuordnung von
zu
und Ihre URL in restTemplate
ändern Sie die URl in das unten gegebene format
InformationsquelleAutor Kris
Hier ist, wie habe ich es erreicht:
Den REST-Controller:
Antrag:
Dann müssen Sie nur implementieren Sie eine Methode, konvertiert die
List
oder dieString[]
an einen plain-string, getrennt durch Kommas, zum Beispiel inJava 8
wäre so etwas wie dieses:InformationsquelleAutor Fernando Fradegrada