2012-10-04 3 views
1

Nouveau sur Java, GWT et interagissant avec les API. J'ai ce que j'espère est une question simple.Envoi d'attributs de poste et de données XML avec une demande de publication?

J'ai collaboré avec succès avec une API REST en utilisant la commande boucle suivante:

curl -d "OPERATION_NAME=ADD_REQUEST&TECHNICIAN_KEY=xxxxxxxxxxx&INPUT_DATA=<?xml version=%221.0%22 encoding=%22utf-8%22?><Operation><Details><requester>Me</requester><subject>Test</subject><description>Testing curl input</description></Details></Operation>" http://xx.xx.xx.xx/sdpapi/request/ 

Maintenant, à partir d'un tutoriel, j'ai le code suivant que j'espère affichera une demande au serveur distant comme la commande curl ci-dessus. Ce que j'essaie de comprendre (sans google de google) est comment je passe les paramètres OPERATION_NAME, TECHNICIAN_KEY et INPUT_DATA dans quand j'envoie l'URL. Toutes suggestions, tutoriels, etc. seront appréciés.

Ce qui suit est de mon côté serveur l'interface de mise en œuvre:

@Override 
public String postToRemoteServer(String serviceUrl) 
     throws HelpDeskTestException { 

    try { 
     //dividing url into host: http://some.server 
     //path: a/path/in/it 
     //and parameters: this=that&those=others 

     int hostStart= serviceUrl.indexOf("//"); 

     int pathStart= serviceUrl.substring(hostStart + 2).indexOf("/"); 

     int parameterStart= serviceUrl.substring(hostStart + 2 + pathStart).indexOf("?"); 

     final String serverHost= serviceUrl.substring(0, hostStart + pathStart + 2); 

     final String serverPath= serviceUrl.substring(hostStart + 3, 
       hostStart + pathStart + 2 + parameterStart); 

     final String serverParameters= serviceUrl.substring(hostStart + pathStart + 3 + parameterStart); 

     final URL url = new URL(serverHost); 

     final URLConnection connection= url.openConnection(); 
     connection.setDoOutput(true); 

     final OutputStreamWriter out= new OutputStreamWriter(connection.getOutputStream()); 

     final BufferedReader in= new BufferedReader(new InputStreamReader(
       connection.getInputStream())); 

     out.write("POST " + serverPath + "\r\n"); 
     out.write("Host: " + serverHost + "\r\n"); 
     out.write("Accept-Encoding: identity\r\n"); 
     out.write("Connection: close\r\n"); 
     out.write("Content-Type: application/x-www-form-urlencoded\r\n"); 
     out.write("Content-Length: " + serverParameters.length() + "\r\n\r\n" + 
      serverParameters + "\r\n"); 


     String result = ""; 
     String inputLine; 

     while ((inputLine=in.readLine()) != null) { 
      result+= inputLine; 
     } 

     in.close(); 
     out.close(); 

     return result; 

    } catch (final Exception e) { 
     throw new HelpDeskTestException(); 

    } 

Répondre

1

utilisant cette bibliothèque Tenir compte: Apache HttpClient. Here is an example de faire une demande POST avec elle.

+0

Merci, je vais jeter un coup d'oeil. – brl8

+0

Je vais accepter cette réponse parce que j'ai essayé ceci aussi bien qu'utilisant HttpURLConnection comme suggéré ici: [http://stackoverflow.com/questions/12792329/gwt-error-the-output-stream-has-been-committed -and-can-no-longer-be-written-to/12803400 # 12803400] – brl8

Questions connexes