2016-09-05 8 views
0

IBM MF8 Java 어댑터에서 게시물 요청 샘플을 시도했습니다. 이 어댑터 내부 IBM MF8 Adapter Mashup - POST 요청

, 나는 또 다른 자바 어댑터, SampleAdapter의 호출을 시도하고 매개 변수 SampleAdapter는 객체 된 UserDetails를 얻을 수있다

@POST 
@Consumes(MediaType.APPLICATION_JSON) 
@Produces(MediaType.APPLICATION_JSON) 
@Path("/balanced") 
@OAuthSecurity(enabled = false) 
public JSONObject generate(UserDetails userDetails , HttpRequest request, HttpSession session) throws UnsupportedEncodingException { 

    String messages = null; 

    String getProcedureURL = "/SampleAdapter/resource"; 
    StringEntity requestEntity = new StringEntity(userDetails.toString(),ContentType.APPLICATION_JSON); 

    HttpPost httpPost = new HttpPost(getProcedureURL); 
    httpPost.setEntity(requestEntity); 
    JSONObject jsonObj = null; 

    HttpResponse response; 
    try { 

     response = adaptersAPI.executeAdapterRequest(httpPost); 
     jsonObj = adaptersAPI.getResponseAsJSON(response); 
     messages = (String)jsonObj.get("subscriptionMessage"); 

    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

    JSONObject json = new JSONObject(); 
    json.put("value", messages); 

    return json; 
} 

로 된 UserDetails와 POST를하고 싶어하고있다. 그래서 일부 작업을 위해 백엔드에서 사용할 수 있습니다.

하지만 여기서는 데이터를 SampleAdapter에 가져올 수 없습니다. 또한 SampleAdapter에서 일부 String을 반환하려고했습니다.

나는 아래의 오류

{"responseText":"","error":"Response cannot be parsed to JSON"} 

나는 IBM MF 내부적으로 JSON 변환을한다는 것을 알고 있지만, 여기에 어떻게 어댑터 하나의 어댑터에서 POST를 할 수 있습니다를 얻을. GET 요청에 대해서만 제공되는 샘플을 볼 수 있습니다. POST에 대한 제안 사항이 있습니까?

@POST 
@Consumes(MediaType.APPLICATION_JSON) 
@Produces(MediaType.APPLICATION_JSON) 
@Path("/balanced") 
@OAuthSecurity(enabled = false) 
public JSONObject generate() throws UnsupportedEncodingException { 

    String messages = null; 

    String getProcedureURL = "/SampleAdapter/resource/hello"; 
    StringEntity requestEntity = new StringEntity("world", ContentType.APPLICATION_JSON); 

    HttpPost httpPost = new HttpPost(getProcedureURL); 
    httpPost.setEntity(requestEntity); 
    JSONObject jsonObj = null; 

    HttpResponse response; 
    try { 

     response = adaptersAPI.executeAdapterRequest(httpPost); 
     jsonObj = adaptersAPI.getResponseAsJSON(response); 
     messages = "Hello " + (String)jsonObj.get("name"); 

    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

    JSONObject json = new JSONObject(); 
    json.put("value", messages); 

    return json; 
} 

을 그리고 여기에 POST 엔드 포인트입니다 :

답변

1

나는 당신에 따라 당신에게 간단한 예를 쓴 나는이 당신을 도울 것입니다 희망

@POST 
@Produces(MediaType.APPLICATION_JSON) 
@Path("/hello") 
@OAuthSecurity(enabled = false) 
public Map<String, String> hello(String name) { 
    Map<String, String> result = new HashMap<String, String>(); 
    result.put("name", name); 
    return result; 
} 

.

+0

코드 주셔서 감사합니다. 하지만, 내 문제는 다른 어댑터에 전체 개체를 전달하는 것입니다. "userDetails"(요청)를 다른 어댑터에 전달하는 옵션이 있는지 알고 싶습니다. – Prisy

+0

SampleAdapter 자원 끝점과 userDetails 개체에 대한 설명을 질문에 추가 할 수 있습니까? –