2012-09-03 5 views
0

J'ai une application android avec une base de données MySQL. Les lignes entrées sur la tablette Android doivent être synchronisées sur un serveur, également avec MySQL. Une fois écrit sur le serveur, le serveur Integer unique doit être retourné à la tablette pour mettre à jour la base de données locale. De cette façon, le client sera redirigé vers le serveur. Il fonctionne actuellement en effectuant un PUT pour chaque ligne et en utilisant l'emplacement de l'ID du serveur dans la réponse. Cependant, cela prend beaucoup de temps s'il y a une quantité importante de mises à jour, insère chaque ligne ouvrant une nouvelle HttpConnection. J'aimerais pouvoir regrouper les mises à jour dans une chaîne XML et obtenir un fichier XML renvoyé avec la référence x de l'ID serveur pour chaque ID client. Cependant je ne peux pas trouver un moyen d'envoyer du XML dans la réponse, seulement un URI. Mon code de connexion estREST PUT Format de réponse

HttpParams httpParameters = new BasicHttpParams(); 
HttpConnectionParams.setConnectionTimeout(httpParameters, Const.HTTP_CONNECTION_TIMEOUT); 
HttpConnectionParams.setSoTimeout(httpParameters, Const.HTTP_SOCKET_TIMEOUT); 
DefaultHttpClient client = new DefaultHttpClient(httpParameters); 
client.getCredentialsProvider().setCredentials(AuthScope.ANY,new UsernamePasswordCredentials("xxxxx","xxxxx")); // TODO Change to logged user name 
HttpPut put = new HttpPut(uri); 
StringEntity entity = new StringEntity(xml); 
entity.setContentType("application/xml"); 
put.setEntity(entity); 
HttpClientParams.setRedirecting(put.getParams(), false); 
HttpResponse response = client.execute(put); 
switch (response.getStatusLine().getStatusCode()){ 
case 200: 
case 201: 
    location = response.getLastHeader("Location").getValue(); 
    key = location.substring(location.lastIndexOf("/")+1); 
    break; 
case 401: 
    throw new RuntimeException("Authorisation Failed"); 
default: 
    throw new RuntimeException("Failed to Create Data Record on Server"); 
      } 

Et sur le serveur

if (flight.getClientFlightId()!=0){ 
if (insertFlight(userId)){ 
    xref += "<clientId>"+flight.getClientFlightId()+"</clientId><serverId>"+flight.getServerFlightId()+"</serverId>"; 
    } 
} 
xref +="</xref>"; 
response = Response.created(URI.create(xref)).build(); 

Toute personne en mesure d'aider s'il vous plaît?

Répondre

0
ArrayList<NameValuePair> putParams = new ArrayList<NameValuePair>(); 
putParams.add(new BasicNameValuePair("myXML", "<xml> _PUT_YOUR_XML_HERE_ </xml>")); 
UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(putParams); 
put.setEntity(formEntity); 
+0

pas ce que je voulais dire. Obtenir le xml dans un PUT fonctionne bien. Je veux juste un XML aussi. – PeterB