2014-11-18 2 views

답변

0

전송되는 JSON 객체를 정확하게 표현하고 있습니까? 왜냐하면 단순히 param 객체의 JSON 객체가있는 POST 요청을 클라우드 엔드 포인트로 보내지 않기 때문입니다. 자바 스크립트 관점에서 Endpoint API 상호 작용에 대한 철저한 가이드 - 클라이언트 라이브러리가 호출을 통해 객체 "gapi"를 노출하는 방법을 알아보십시오. here을 참조하십시오. 이 JSON을 iOS 또는 Android 앱에서 보내는 경우 비슷한 클라이언트 라이브러리가 a cloud endpoints build tool에 의해 생성 될 수 있습니다.

+0

위의 형식 (정확한 정보가 아닌)이지만 동일한 형식으로 내 끝점에 JSON을 POST하는 타사 서비스에 내 응용 프로그램을 통합하려고합니다. 내 끝점에 대한 POST 호출로 JSON 배열을 수락하려면 어떻게해야합니까? –

+0

JSON을 엔드 포인트에 게시 할 수 없습니다. 엔드 포인트가 대상 플랫폼 (웹 (js), 안드로이드, iOS 등)을위한 클라이언트 라이브러리를 생성하는 도구를 강력히 권장합니다. 엔드 포인트가 기대하는 형식을 배우고 똑같은 JSON 객체를 생성하십시오. 요청에 따라 직접 인증을 처리하십시오. 타사 서비스에서 가져온 데이터의 형식을 제어 할 수없는 경우 요청을 자신의 서블릿에 전달하는 것이 좋습니다. 올바르게 형식화 된 엔드 포인트 호출을 작성한 다음 최종적으로 수신 한 값을 리턴합니다. –

0

많은 좌절감을 느낀 후 나는 문서를 더 신중하게 읽었습니다. 그 탐구에서 필자는 문서에서 중요한 참고 발견 ". 모든 매개 변수를 제외한 유형 또는 주입 형 엔티티 유형으로 간주됩니다 ... 엔터티 유형이 @Named로 주석 할 수 없다" https://cloud.google.com/endpoints/docs/frameworks/java/parameter-and-return-types

모든 예제가 명명 된 매개 변수를 보여 주었기 때문에 문서가 더 이상 설명하지 않지만 난 해결책을 찾지 못해 난처했다. 이름 지정된 매개 변수가 없으면 모든 것이 LinkedHashMap으로 전달됩니다. 일반적으로 데이터 구조 만 있으면 필요한 모든 작업을 수행 할 수 있지만 JSON으로 변환해야하는 경우 변환 할 수 있습니다. 다음은 몇 가지 예는 다음과 같습니다

이와
@ApiMethod(name = "endpointIterfaceName.createItems", httpMethod = "post", path = "test/items") 
public WhateverReturnType createItems(LinkedHashMap<String, Object> itemsMap) { 

    // Do Stuff with map values 
    return whateverReturnValue; 

} 

, 당신은 JSON의 Content-Type을 사용하여 데이터를 게시 있는지 확인해야합니다 (즉, 콘텐츠 형식 : 응용 프로그램/JSON; 문자셋 = UTF-8) . 예를 들어 테스트 할 때 jquery ajax 호출로 dataType을 "json"또는 Postman으로 설정해야하는 경우 "Raw"다음 JSON (application/json)을 선택합니다. 당신이 정말로 때문에 해시 맵을 사용할 수 없습니다 어떤 이유에서 자바에서 JSON 객체에이를 변환 할 경우

, 당신은 당신의 방법으로 다음을 수행 할 수

보조 노트로
// Use gson library to convert the map to a string 
Gson gson = new Gson(); 
String mapAsJsonString = gson.toJson(itemsMap); 
// create a JSON object from the new string representation 
JSONObject obj = new JSONObject(mapAsJsonString); 

, 이것이 Content-Type : text로 전달되면 전체 본문이지도의 첫 번째 키로 표시됩니다. 당신은 여기에 몇 가지 일을 할 수 있고 그 열쇠를 얻고지도를 문자열로 변환 한 다음 json 객체로 변환하는 것을 피할 수 있습니다. 그러나 제가 말했던 것처럼, 이것은 옳지 않습니다. :)

관련 문제