Я изучаю веб-сервисы с использованием 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);
}
Спасибо.