Bonjour,
Suite à votre aide, j'ai enfin réussi à appelé le service de géocodage depuis des outils web. Mais maintenant, il me faudrait y accéder depuis notre application en Java. Ma méthode n'aboutit pas, plus particulièrement la méthode httpclient.executeMethod (ligne 44 dans le code qui suit).
Je suis persuadé d'avoir oublier un petit truc tout bête mais je ne vois pas ... Et pourtant j'ai les yeux grand ouvert .
J'ai essayé de nettoyer le code et de le limiter au plus bref mais je n'ai pas pu faire mieux désolé.
Merci d'avance
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59 /** * Créée et envoie un flux XML via HTTP POST au serveur OpenLS (service de géocodage) * Récupère la réponse du serveur OpenLS et la retourne sous forme de String * @return ResponseBodyasString le flux XML de réponse du servuer OpenLS sous forme de String */ public String envoiRequeteGeocodeRecuperationResponseAlexTest(){ String responseBodyasString =null;//String contenant la réponse du serveur OpenLS (= le flux de géocodage) String urlGeocodage = "https://gpp3-wxs.ign.fr/MA_CLE/geoportail/ols"; // Préparation de la méthode Post, qui créé une requete HTTP POST PostMethod post = new PostMethod(urlGeocodage); //Création et envoi d'un flux XML (fonctionne avec poster de mozilla firefox) String fileContent = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><XLS xmlns:xls=\"http://www.opengis.net/xls\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns=\"http://www.opengis.net/xls\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"1.2\" xsi:schemaLocation=\"http://www.opengis.net/xls http://schemas.opengis.net/ols/1.2/olsAll.xsd\"><RequestHeader/><Request requestID=\"1\" version=\"1.2\" methodName=\"LocationUtilityService\"><GeocodeRequest returnFreeForm=\"false\"><Address countryCode=\"StreetAddress\"><StreetAddress><Street>11 allée des sciences</Street></StreetAddress><Place type=\"Municipality\">Albi</Place><PostalCode>81000</PostalCode></Address></GeocodeRequest></Request></XLS>"; // Ajout du body contenant le flux XML StringRequestEntity strReqEnt = null; try { strReqEnt = new StringRequestEntity(fileContent,"text/xml","UTF-8"); } catch (UnsupportedEncodingException e1) { } post.setRequestEntity(strReqEnt); //Configuration du header de la requete : //Content-length, int length = fileContent.length(); String contentLength = String.valueOf(length); post.setRequestHeader("Content-length", contentLength); //Content-type, post.setRequestHeader("Content-type", "text/xml"); // les authorisations -> contrat de type SIG donc avec id:pwd en base 64 post.setRequestHeader("Authorization", "Basic monIdPwdEnBase64"); //Création d'un nouveau client : HttpClient httpclient = new HttpClient(); // Envoi requete post try{ //initialisation au besoin des informations sur l'authentification System.err.println("Initialisation des informations d'authentification");//TODEL SystemPropertyHelper.getInstance().setAuthentificationInfoForPostMethod(post); System.err.println("Exécution de la méthode post!");//TODEL httpclient.executeMethod(post); /* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! * !!! cette méthode n'aboutis pas !!! * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */ // Réception de la réponse et on la stocke sous forme de String : responseBodyasString = post.getResponseBodyAsString(); }catch(HttpException he){ } catch (IOException e) { }finally {//On coupe la connexion post.releaseConnection(); } return responseBodyasString; }
Partager