Wie kann ich ein Array mit einer HTTP-Get-Anfrage senden?Senden Sie ein Array mit einem HTTP Get
Ich benutze GWT Client, um die Anfrage zu senden.
Wie kann ich ein Array mit einer HTTP-Get-Anfrage senden?Senden Sie ein Array mit einem HTTP Get
Ich benutze GWT Client, um die Anfrage zu senden.
Das hängt davon ab, was der Zielserver akzeptiert. Dafür gibt es keinen definitiven Standard. Siehe auch a.o. Wikipedia: Query string:
Zwar gibt es keinen definitiven Standard, erlaubt die meisten Web-Frameworks mehr Werte mit einem einzigen Feld zugeordnet werden (z.B.
field1=value1&field1=value2&field2=value3
). [4][5]
Im Allgemeinen, wenn der Zielserver ein stark typisierte Programmiersprache wie Java (Servlet) verwendet, dann kann man sie einfach als mehrere Parameter mit dem gleichen Namen senden. Die API bietet normalerweise eine dedizierte Methode, um mehrere Parameterwerte als Array zu erhalten.
foo=value1&foo=value2&foo=value3
String[] foo = request.getParameterValues("foo"); // [value1, value2, value3]
The request.getParameter("foo")
wird auch daran arbeiten, aber es wird nur der erste Wert zurück.
String foo = request.getParameter("foo"); // value1
Und wenn der Zielserver eine schwach typisieren Sprache wie PHP oder RoR verwendet, dann müssen Sie mit Klammern []
um die Parameternamen Suffix die Sprache auszulösen ein Array von Werten zurückzukehren, anstatt ein einzelner Wert.
foo[]=value1&foo[]=value2&foo[]=value3
$foo = $_GET["foo"]; // [value1, value2, value3]
echo is_array($foo); // true
Falls Sie noch foo=value1&foo=value2&foo=value3
verwenden, geben es wird dann nur der erste Wert.
$foo = $_GET["foo"]; // value1
echo is_array($foo); // false
Sie beachten Sie, dass, wenn Sie foo[]=value1&foo[]=value2&foo[]=value3
an ein Java-Servlet schicken, dann können Sie immer noch erhalten, aber Sie würden die genauen Parameternamen einschließlich den geschweiften Klammern verwenden müssen.
String[] foo = request.getParameterValues("foo[]"); // [value1, value2, value3]
Ich weiß, dass dieser Beitrag wirklich alt ist, aber ich habe zu antworten, denn obwohl BalusC Antwort als korrekt markiert ist, dann ist es nicht ganz korrekt.
foo[]=val1&foo[]=val2&foo[]=val3
Gut, dass Sie zu diesem alten Beitrag geantwortet:
Sie haben die Abfrage hinzufügen „[]“ so foo zu schreiben! Es hat definitiv geholfen. –
Diese Antwort ist nur für Benutzer von schwach typisierten Sprachen wie PHP korrekt, da das '[]' tatsächlich als interner Workaround verwendet wird, um mehrwertige Parameter zu erhalten. Meine Antwort wurde aktualisiert, um mehr zu verdeutlichen. Ihre Aussage "es ist nicht vollständig korrekt" ist also ungültig. Die ursprüngliche Frage war über Java, nicht über PHP. – BalusC