2016-10-04 3 views
0

Java를 사용하여 웹 서비스를 배우고 있습니다. 나는 기술적으로 멍청한데, 이것은 내가 작성한 코드이다. 어떤 방법이 어떤 방법이 다른 것보다 어떤 이점을 가지고 있는지, 어떤 것이 더 안전한지와 같은 것을 알지 못한다. 어느 것이 더 빠를 것입니까? 나는 너무 광범위한 답변을 요구하지는 않습니다. 짧은 간결한 사람이 할 것입니다. Jersey 2.x를 사용하여 REST 서비스를 만들었으며 REST 서비스를 사용하기 위해 클라이언트를 만들었습니다. 다음과 같이Jersey WebTarget 대 HTTPURLConnection

POST 자원은

@POST 
@Path("postactivity") 
@Consumes(MediaType.APPLICATION_JSON) 
@Produces(MediaType.APPLICATION_JSON) 
public String createActivity(
     @QueryParam("id") int id, 
     @QueryParam("description") String description, 
     @QueryParam("duration") int duration, 
     @QueryParam("name")String name) 
{ 
    //My code that creates Activity object from QueryParams is here. 
} 

가 지금은 자바 응용 프로그램 클라이언트를 만든 것이다. 위의 REST 서비스는 다음 두 가지 방법으로 사용합니다. 뉴저지

private static void doPost(){ 
    Response entity = webTarget 
      .path("activities/postactivity") 
      .queryParam("id",2204) 
      .queryParam("description","Foo") 
      .queryParam("duration",100) 
      .queryParam("name", "Bar") 
      .request() 
      .post(null); 
    String entityRead = entity.readEntity(String.class); 

    System.out.println(entityRead); 
    Activity activityRead = GSON.fromJson(entityRead, Activity.class); 
    } 

감사를 통해

방법 1사용할 수 WebTarget를 사용하여 HttpURLConnection의

private static void doPost(){ 
    QueryString qs = new QueryString("id", "123"); //QueryString is a class created to build query, not important to the question. 
    qs.add("duration", "12"); 
    qs.add("description", "This is description"); 
    qs.add("name", "This is Name"); 
    String url = "http://localhost:8080/webservices/webapi/activities/activity?" + qs; 

    URL obj; 
    try { 
     obj = new URL(url); 
     HttpURLConnection con = (HttpURLConnection) obj.openConnection(); 
     con.setRequestProperty("Content-Type","application/json"); 
     con.setRequestMethod("POST"); 
     con.setRequestProperty("User-Agent", "Mozilla 5.0"); 
     con.setDoOutput(true); 


     BufferedReader in = new BufferedReader(
       new InputStreamReader(con.getInputStream())); 
     String inputLine; 
     StringBuffer response = new StringBuffer(); 

     while ((inputLine = in.readLine()) != null) { 
      response.append(inputLine); 
     } 
     in.close(); 

     Activity activity = GSON.fromJson(response.toString(), Activity.class); //This is for checking if i'm getting correct data back which I'm sending. 


    } catch (MalformedURLException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

방법 2.

+0

문제를 지적 해 주시겠습니까? 구현이 효과가 있습니다. 무엇을 갖고 싶습니까? 현재 RESTful 웹 서비스를 사용하는 모든 방법을 개관하고 싶은 것 같습니다. –

+0

@ SergeyBrunov 저는 두 가지 중 어느 것이 권장되는지 알고 싶습니다. 하나를 사용하는 것이 다른 것에 비해 장점/단점이 있다면 알고 싶습니다. – NoobProgrammer

답변

0

Honestyl 나는 당신에게 쓸 내용이 두 가지 있습니다. 1. HttpURLConnection은 (웹 서비스와 같은) 웹 제휴 검색을 수행하는 자바 개인적인 방법이지만, 스트레스없는 방법으로 작업 할 수 있습니다 저지와 함께하면 물건을 더 빠르고 부드럽게 만들 수 있습니다. 일부 사람들은 Jersey 스타일이 High-level API이고 HttpURLConnection은 저수준 API라고 부르는 경우도 있습니다. 2. @Queryparam POST 웹 메소드를 사용하여 지난 이틀 동안 발생한 문제에 대한 귀하의 질문에 필 요한 해결책을 제공 할 수있었습니다. 정말 고마워.

감사합니다.

+0

이것은 유용한 답변이 아니므로 의견으로 더 잘 맞을 것입니다. – Verv