Джерси WebTarget против HTTPURLConnection

Я изучаю веб-сервисы с использованием Java. Я технически нуб, это код, который я написал, который работает, я просто не знаю, какой метод имеет какое преимущество перед другим, например, какой из них более безопасный? Какой из них будет более быстрым? Я не прошу полного слишком широкого ответа. Подойдет краткий краткий. Я создал службу REST, используя Jersey 2.x, и создал клиента для использования указанной службы REST.

Ресурс 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.
}   

Теперь я создал клиент, который является приложением Java. Я использую вышеуказанную службу REST двумя способами.

Способ 1 Использование 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 Использование WebTarget, доступного через Джерси

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);
    }

Спасибо.


person chirag    schedule 04.10.2016    source источник
comment
Не могли бы вы указать на проблему? Реализация работает на вас, что бы вы хотели иметь? В настоящее время похоже, что вы хотели бы просмотреть все способы использования веб-службы RESTful.   -  person Sergey Vyacheslavovich Brunov    schedule 10.10.2016
comment
@SergeyBrunov Я просто хочу знать, какой из двух рекомендуется, и имеет ли использование одного какое-то преимущество / недостаток перед другим.   -  person chirag    schedule 12.10.2016


Ответы (1)


Честное слово, у меня есть две вещи, чтобы написать вам: 1. HttpURLConnection — это персональный Java-способ получения веб-партнеров (например, веб-сервисов), но у вас есть лучший и беззаботный способ сделать это с Джерси, и это будет сделать все быстрее и проще для вас. Некоторые даже говорят, что стиль Джерси — это высокоуровневый API, а HttpURLConnection — низкоуровневый API. 2. Ваш вопрос смог предоставить мне необходимое решение проблемы, с которой я столкнулся в течение последних двух дней с использованием веб-метода @Queryparam POST. Я действительно ценю это.

Спасибо

person Segun Ajayi    schedule 14.09.2017
comment
Это бесполезный ответ и лучше подходит в качестве комментария. - person Verv; 14.09.2017