2010-07-02 7 views
2

J'ai une page jsp qui contient un formulaire, elle est supposée envoyer les données de formulaire à une servlet distante, qui les calcule, puis les renvoie au format XML. Cela fonctionne, mais pour le moment je crée une instance et un répartiteur qui ne fonctionne qu'avec des servlets locaux alors que je veux que cela fonctionne avec une servlet distante.Appel d'une servlet Java distante

On m'a déjà dit que HTTPClient ferait cela, mais cette chose est devenue un tel mal de tête et il semble que ce soit une surpuissance complète pour ce que je veux faire. Il doit y avoir une méthode simple, plutôt que de se contenter de tous ces composants et dépendances.

S'il vous plaît donner un exemple de code si possible, je suis vraiment un novice complet à Java, beaucoup plus d'un gars de PHP: P

Répondre

2

figured it out avec l'aide de certaines ressources en ligne. Doit d'abord collecter les valeurs soumises (request.getParamater ("bla")), construire la chaîne de données (URLEnconder), démarrer une URLConnection et lui dire d'ouvrir une connexion avec l'URL désignée, démarrer un OutputStreamWriter puis lui dire de ajouter la chaîne de données (URLEncoder), puis enfin lire les données et l'imprimer ...

est Ci-dessous l'essentiel du code:

String postedVariable1 = request.getParameter("postedVariable1"); 
String postedVariable2 = request.getParameter("postedVariable2"); 

//Construct data here... build the string like you would with a GET URL  
String data = URLEncoder.encode("postedVariable1", "UTF-8") + "=" + URLEncoder.encode(postedVariable1, "UTF-8"); 
data += "&" + URLEncoder.encode("postedVariable2", "UTF-8") + "=" + URLEncoder.encode(submitMethod, "UTF-8"); 

    try { 
     URL calculator = new URL("http://remoteserver/Servlet"); 
     URLConnection calcConnection = calculator.openConnection(); 
     calcConnection.setDoOutput(true); 
     OutputStreamWriter outputLine = new OutputStreamWriter(calcConnection.getOutputStream()); 
     outputLine.write(data); 
     outputLine.flush(); 


     // Get the response 
     BufferedReader streamReader = new BufferedReader(new InputStreamReader(calcConnection.getInputStream())); 
     String line; 
     //streamReader = holding the data... can put it through a DOM loader? 
     while ((line = streamReader.readLine()) != null) { 
      PrintWriter writer = response.getWriter(); 
      writer.print(line); 
     } 
     outputLine.close(); 
     streamReader.close(); 

    } catch (MalformedURLException me) { 
     System.out.println("MalformedURLException: " + me); 
    } catch (IOException ioe) { 
     System.out.println("IOException: " + ioe); 
    } 
+0

Pouvez-vous me dire comment vous renvoyer les données? j'ai besoin de ça –