[java] HTTP Get으로 배열 보내기

HTTP Get 요청으로 어레이를 보내려면 어떻게해야합니까?

요청을 보내기 위해 GWT 클라이언트를 사용하고 있습니다.



답변

그것은 대상 서버가 수락하는 것에 달려 있습니다. 이것에 대한 명확한 표준은 없습니다. ao Wikipedia : Query string 참조 :

명확한 표준은 없지만 대부분의 웹 프레임 워크에서는 여러 값을 단일 필드 (예 :)와 연결할 수 있습니다 field1=value1&field1=value2&field2=value3. [4] [5]

일반적으로 대상 서버가 Java ( Servlet ) 와 같은 강력한 유형의 프로그래밍 언어를 사용하는 경우 동일한 이름의 여러 매개 변수로 보낼 수 있습니다. API는 일반적으로 여러 매개 변수 값을 배열로 얻기위한 전용 메소드를 제공합니다.

foo=value1&foo=value2&foo=value3
String[] foo = request.getParameterValues("foo"); // [value1, value2, value3]

request.getParameter("foo")또한에 작동하지만 그것은 단지 첫 번째 값을 반환 할 수 있습니다.

String foo = request.getParameter("foo"); // value1

그리고 대상 서버가 PHP 또는 RoR과 같은 약한 유형[] 의 언어를 사용하는 경우 단일 값 대신 값 배열을 반환하도록 언어를 트리거하기 위해 매개 변수 이름에 중괄호를 붙여야 합니다.

foo[]=value1&foo[]=value2&foo[]=value3
$foo = $_GET["foo"]; // [value1, value2, value3]
echo is_array($foo); // true

여전히을 사용하는 경우 foo=value1&foo=value2&foo=value3첫 번째 값만 반환됩니다.

$foo = $_GET["foo"]; // value1
echo is_array($foo); // false

foo[]=value1&foo[]=value2&foo[]=value3Java Servlet으로 보낼 때 여전히 얻을 수 있지만 중괄호를 포함한 정확한 매개 변수 이름을 사용해야합니다.

String[] foo = request.getParameterValues("foo[]"); // [value1, value2, value3]


답변

이 게시물이 정말 오래되었다는 것을 알고 있지만 BalusC의 답변이 정확하다고 표시되어 있지만 완전히 정확하지는 않기 때문에 답장해야합니다.

다음과 같이 foo에 “[]”를 추가하는 쿼리를 작성해야합니다.

foo[]=val1&foo[]=val2&foo[]=val3


답변