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
| private Hashtable runWS(String serviceStub, String methode, Hashtable params, String[] responseKeys)
{
Hashtable resp = new Hashtable();
try
{
Class cl = Class.forName(serviceStub);
// On contruit l'objet permettant de passer les paramètres
Class clParam = Class.forName(serviceStub + "$" + capitalizeFirst(methode));
Object param = clParam.newInstance();
for (Enumeration keys=params.keys();keys.hasMoreElements();)
{
String key = (String)keys.nextElement();
valuateProperty(cl, key, param, params.get(key));
}
Object stubService = cl.newInstance();
Method stubMethode = cl.getMethod(methode, new Class[]{clParam});
// On lance le service
Object response = stubMethode.invoke(stubService, new Object[]{param});
// On récupère la réponse et retournons toutes les valeurs demandées
Class clResponse = Class.forName(serviceStub + "$" + capitalizeFirst(methode) + "Response");
for (int i=0;i<responseKeys.length;i++)
{
Object resVal = getProperty(cl, responseKeys[i], response);
/*PropertyDescriptor pd = new PropertyDescriptor(responseKeys[i], clResponse);
Object resVal = pd.getReadMethod().invoke(response, null);*/
resp.put(responseKeys[i], resVal);
}
}
catch (Throwable e)
{
if (e instanceof InvocationTargetException)
e = e.getCause();
e.printStackTrace();
Log.error(Log.UILOGIC,"Erreur à l'appel d'un service web : " + e.toString());
}
return resp;
} |
Partager