|
Adesso realizziamo una classe, che utilizzando le classi soap invii un richiesta al web service di Babel passandogli due informazioni il testo da tradurre e i "locales", ovvero la modalità di traduzione: esempio per tradurre dall'italiano all'inglese "it_en", inglese francese "en_fr" etc etc….. Fatto questo otteniamo la risposta dal ws e la ritorniamo. package bridge; import java.net.*; import java.util.*; import org.apache.soap.*; import org.apache.soap.encoding.*; import org.apache.soap.encoding.soapenc.*; import org.apache.soap.rpc.*; import org.apache.soap.util.xml.*; public class BabelBridge { // creo un oggetto soap di tipo call per effettuare la chiamata private Call call = new Call (); private URL url; public String traduci(String translationmode, String sourcedata ) throws SOAPException,MalformedURLException{ //setto dentro la call di soap l'identificativo del servizio call.setTargetObjectURI("urn:xmethodsBabelFish"); //dichiaro a quale url è in ascolto il servizio url= new URL("http://services.xmethods.net:80/perl/soaplite.cgi"); Vector param = new Vector (); //secondo il meccanismo di soap serializzo le informazioni da inviare dentro ad un vettore param.addElement (new Parameter("translationmode", String.class,translationmode, null)); param.addElement (new Parameter("sourcedata", String.class,sourcedata, null)); call.setParams (param); //indico alla chiamata quale metodo invocare remotamente call.setMethodName ("BabelFish"); call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC); //invoco il web service ed attendo la risposta Response result = call.invoke (url, ""); //controllo se la risposta contiene degli errori if (result.generatedFault ()) { Fault fault = result.getFault(); throw new SOAPException(fault.getFaultCode(), fault.getFaultString()); } Parameter retValue = result.getReturnValue(); //ritorno castando a stringa il valore di ritorno dalla risposta if (retValue != null) return (String)retValue.getValue (); return "OPERAZIONE RIUSCITA"; } } Adesso salvate la classe con nome "BabelBridge" dentro la cartella bridge (traduttore/WEB-INF/classes/bridge).
|