| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente |
| slam4:gui:rest [2015/03/15 20:07] – [3.2- POST] jcheron | slam4:gui:rest [2019/08/31 14:21] (Version actuelle) – modification externe 127.0.0.1 |
|---|
| ==== -- POST ==== | ==== -- POST ==== |
| |
| Le post est légèrement plus complexe, puisqu'il nécessite : | Implémmenter la méthode restPostJSON : |
| | <sxh java;title:test/TestHttp.java> |
| | ... |
| | public String restPostJSON(String urlToRead, Object o) throws ClientProtocolException, IOException { |
| | String result = ""; |
| | CloseableHttpClient httpClient = HttpClients.createDefault(); |
| | try { |
| | HttpPost postRequest = new HttpPost(urlToRead); |
| | postRequest.setHeader("content-type", "application/json"); |
| | postRequest.setHeader("Accept", "application/json"); |
| | String jsonString = gson.toJson(o); |
| | StringEntity params = new StringEntity(jsonString); |
| | params.setContentType("application/json"); |
| | params.setContentEncoding("UTF-8"); |
| | postRequest.setEntity(params); |
| | ResponseHandler<String> responseHandler = new BasicResponseHandler(); |
| | result = httpClient.execute(postRequest, responseHandler); |
| | } finally { |
| | httpClient.close(); |
| | } |
| | return result; |
| | } |
| | ... |
| | </sxh> |
| | |
| | Modifier la méthode **main** de la classe pour tester le restPostJSON : |
| | |
| | <sxh java;title:test/TestHttp.java;highlight:[9,10,11]> |
| | ... |
| | public static void main(String args[]) { |
| | TestHttp test = new TestHttp(); |
| | |
| | try { |
| | ... |
| | System.out.println(test.restPostJSON( |
| | "http://127.0.0.1/[restServer]/mondes", new Monde("Nouveau"))); |
| | |
| | } catch (IOException e) { |
| | e.printStackTrace(); |
| | } |
| | } |
| | ... |
| | </sxh> |
| | |
| | |
| | |
| | ===== -- POST Classique ===== |
| | |
| | Le post classique est légèrement plus complexe, puisqu'il nécessite : |
| * La conversion en JsonObject de l'objet à poster | * La conversion en JsonObject de l'objet à poster |
| * L'envoi dans l'en-tête HTTP des couples nomDeMembre/valeur de l'objet | * L'envoi dans l'en-tête HTTP des couples nomDeMembre/valeur de l'objet |
| |
| |
| Implémmenter la méthode getHttp : | Implémmenter la méthode postJSON : |
| <sxh java;title:test/TestHttp.java> | <sxh java;title:test/TestHttp.java> |
| ... | ... |
| </sxh> | </sxh> |
| |
| Modifier la méthode **main** de la classe pour tester le POST, il s'agit ici d'un exemple avec une classe User : | Modifier la méthode **main** de la classe pour tester le POST classique, il s'agit ici d'un exemple avec une classe User : |
| |
| <sxh java;title:test/TestHttp.java;highlight:[9,10,11]> | <sxh java;title:test/TestHttp.java;highlight:[9,10,11]> |
| } | } |
| ... | ... |
| | </sxh> |
| | |
| | ===== -- Session ===== |
| | |
| | Pour conserver la session, on instancie un HttpContext, qui sera passé à toutes les requêtes. |
| | |
| | |
| | <sxh java> |
| | |
| | private HttpContext httpContext; |
| | private CloseableHttpClient httpClient; |
| | private CookieStore cookieStore; |
| | |
| | protected void createCookieStore() { |
| | httpClient = HttpClients.createDefault(); |
| | cookieStore = new BasicCookieStore(); |
| | httpContext = new BasicHttpContext(); |
| | httpContext.setAttribute(HttpClientContext.COOKIE_STORE, cookieStore); |
| | } |
| | |
| | public TestHttp() { |
| | gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create(); |
| | createCookieStore(); |
| | } |
| | </sxh> |
| | |
| | Utilisation et passage du HttpContext : |
| | <sxh java> |
| | result = httpClient.execute(getRequest, responseHandler, httpContext); |
| | ... |
| | result = httpClient.execute(postRequest, responseHandler, httpContext); |
| | |
| </sxh> | </sxh> |