[SPRING] JSON 배열을 URL의 매개 변수로 전달하는 방법
SPRINGJSON 배열을 URL의 매개 변수로 전달하는 방법
웹 서비스 호출에서 모바일에서 서버로 일부 값을 전달해야한다는 요구 사항이 있으므로 아래의 JSON 형식으로 모든 값을 전달할 계획입니다.
{
"nameservice": [
{
"id": 7413,
"name": "ask"
},
{
"id": 7414,
"name": "josn"
},
{
"id": 7415,
"name": "john"
},
{
"id": 7418,
"name": "R&R"
}
]
}
다음은 나의 서비스 콜이다.
@RequestMapping("/saveName")
@ResponseBody
public String saveName(String acc)
{jsonObject = new JSONObject();
try
{
);
System.out.println(acc);
jsonObject.accumulate("result", "saved ");
}
catch(Exception e)
{
e.printStackTrace();jsonObject.accumulate("result", "Error Occured ");
}
return jsonObject.toString();
}
이런 식으로 위의 서비스를 호출하려고합니다.
localhost:8080/service/saveName?acc={ "nameservice": [ { "id": 7413, "name": "ask" }, { "id": 7414, "name": "josn" }, { "id": 7415, "name": "john" }, { "id": 7418, "name": "R&R" } ] }
그러나 출력은 다음과 같습니다.
{ "nameservice": [ { "id": 7413, "name": "ask" }, { "id": 7414, "name": "josn" }, { "id": 7415, "name": "john" }, { "id": 7418, "name": "R
어떤 몸이라도 왜 모든 가치를 만족시키지 못하는지 말해 줄 수 있습니까?
해결법
-
==============================
1.POST 요청으로 본문의 JSON 데이터를 전달하는 것이 좋습니다. 그러나 URL의 매개 변수로 전달하려는 경우 다음과 같이 URL을 인코딩해야합니다. -
POST 요청으로 본문의 JSON 데이터를 전달하는 것이 좋습니다. 그러나 URL의 매개 변수로 전달하려는 경우 다음과 같이 URL을 인코딩해야합니다. -
예 json의 경우 : -> { "name": "ABC", "id": "1"}
TESTORLE : 80 % SERVICE = DAT = % LOVE % QANEM 22 %% SABIC % 22 % S %% 22 % 22 % 22 % 22 %
URL 인코딩에 대한 자세한 내용은 아래를 참조하십시오.
https://en.wikipedia.org/wiki/Percent-encoding
-
==============================
2.이것은 나중에 게시 될 수 있지만 새로운 방문자의 경우 OP가 GET을 통해 JSON 객체를 전달할 방법을 요청했기 때문에 새로운 솔루션에 대한 해결책을 공유 할 것입니다 (다른 답변에서 제안 된 POST가 아님).
이것은 나중에 게시 될 수 있지만 새로운 방문자의 경우 OP가 GET을 통해 JSON 객체를 전달할 방법을 요청했기 때문에 새로운 솔루션에 대한 해결책을 공유 할 것입니다 (다른 답변에서 제안 된 POST가 아님).
나는 GET 호출 만 할 수있는 몇몇 경우에 이것을 사용했고 작동한다. 또한이 솔루션은 실제 언어가 아닙니다.
-
==============================
3.&는 다음 매개 변수에 대한 키워드입니다. ur? param1 = 1 & param2 = 2
&는 다음 매개 변수에 대한 키워드입니다. ur? param1 = 1 & param2 = 2
그래서 효과적으로 R이라는 두 번째 매개 변수를 보냅니다. 문자열을 urlencode해야합니다. POST 옵션이 아닌가요?
-
==============================
4.이런 식으로 인증 헤더와 함께 json Input을 POST 요청으로 전달할 수 있습니다.
이런 식으로 인증 헤더와 함께 json Input을 POST 요청으로 전달할 수 있습니다.
public static JSONObject getHttpConn(String json){ JSONObject jsonObject=null; try { HttpPost httpPost=new HttpPost("http://google.com/"); org.apache.http.client.HttpClient client = HttpClientBuilder.create().build(); StringEntity stringEntity=new StringEntity("d="+json); httpPost.addHeader("content-type", "application/x-www-form-urlencoded"); String authorization="test:test@123"; String encodedAuth = "Basic " + Base64.encode(authorization.getBytes()); httpPost.addHeader("Authorization", security.get("Authorization")); httpPost.setEntity(stringEntity); HttpResponse reponse=client.execute(httpPost); InputStream inputStream=reponse.getEntity().getContent(); String jsonResponse=IOUtils.toString(inputStream); jsonObject=JSONObject.fromObject(jsonResponse); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return jsonObject; }
이 메서드는 json 응답을 반환합니다. 동일한 방법으로 GET 메서드를 사용할 수 있습니다.
-
==============================
5.@ RE350은 게시물에서 JSON 데이터를 전달하는 것이 이상적이라고 제안했습니다. 그러나 여전히 json 객체를 GET 요청의 매개 변수로 보내고 json 문자열을 서버 측 로직에서 디코딩하여 객체로 사용할 수 있습니다.
@ RE350은 게시물에서 JSON 데이터를 전달하는 것이 이상적이라고 제안했습니다. 그러나 여전히 json 객체를 GET 요청의 매개 변수로 보내고 json 문자열을 서버 측 로직에서 디코딩하여 객체로 사용할 수 있습니다.
예를 들어, PHP를 사용하고 있다면 다음과 같이 할 수 있습니다 (다른 json 디코딩을 다른 언어로 사용하십시오) :
서버 요청 :
http://<php script>?param1={"nameservice":[{"id":89},{"id":3}]}
서버에서 :
$obj = json_decode($_GET['param1'], true); $obj["nameservice"][0]["id"]
출력 :
89
-
==============================
6.Json 데이터 문자열을 웹 주소로 보내고 메소드 post를 사용하여 결과를 얻습니다.
Json 데이터 문자열을 웹 주소로 보내고 메소드 post를 사용하여 결과를 얻습니다.
C #
public string SendJsonToUrl(string Url, string StrJsonData) { if (Url == "" || StrJsonData == "") return ""; try { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url); request.Method = "POST"; request.ContentType = "application/json"; request.ContentLength = StrJsonData.Length; using (var streamWriter = new StreamWriter(request.GetRequestStream())) { streamWriter.Write(StrJsonData); streamWriter.Close(); var httpResponse = (HttpWebResponse)request.GetResponse(); using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) { var result = streamReader.ReadToEnd(); return result; } } } catch (Exception exp) { throw new Exception("SendJsonToUrl", exp); } }
PHP에서
<?php $input = file_get_contents('php://input'); $json = json_decode($input ,true); ?>
from https://stackoverflow.com/questions/27577922/how-to-pass-a-json-array-as-a-parameter-in-url by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 공용 및 개인 자원에 대해 다른 경로 사용 Jersey + Spring boot (0) | 2018.12.20 |
---|---|
[SPRING] IllegalArgumentException : 적어도 1 개의 JPA 메타 모델이 존재할 필요가있는 (0) | 2018.12.20 |
[SPRING] Spring Security 5 : "null"id에 매핑 된 PasswordEncoder가 없다. (0) | 2018.12.20 |
[SPRING] 스프링 부트의 application.yml에서 롤링 파일 appender를 구성하는 방법 (0) | 2018.12.20 |
[SPRING] 스프링 통합 + cron + 쿼츠 클러스터? (0) | 2018.12.20 |