2012-02-23 1 views
0

Cela fait maintenant deux semaines que j'essaie ça, et je suis vraiment coincé. Au départ, j'avais créé un simple programme client-serveur ObjectOutputStream - le client étant l'application Android, mais cela ne fonctionne pas (il lit la connexion mais pas l'objet). Maintenant, je suis confus quant aux autres approches que je pourrais être en mesure de prendre pour effectuer cette tâche simple? Quelqu'un peut-il aider?Quel est le meilleur moyen d'envoyer une paire de valeurs de nom à un serveur?

+0

Existe-t-il des exigences sur le serveur? Sinon, je envisagerais d'utiliser un serveur HTTP et d'utiliser ce protocole pour envoyer des données. – claesv

Répondre

0

avez-vous essayé URLConnection en utilisant la méthode post? :)

Ou procurez-vous comme méthode:

String yourURL = "www.yourwebserver.com?value1=one&value2=two"; 
URL url = new URL(yourURL); 
URLConnection connection = url.openConnection(); 
BufferedReader in = new BufferedReader(
new InputStreamReader(connection.getInputStream())); 
response = in.readLine(); 
0

vous pouvez essayer JSON stirng pour envoyer des données. Nous avons beaucoup de choses sur la façon de travailler avec JSON et il y a aussi beaucoup d'API. JSONSimple est celui que je peux suggérer. C'est vraiment facile.

+0

J'ai regardé JSON mais je n'ai pas réussi à trouver un tutoriel que je puisse comprendre, ils semblent tous vraiment compliqués. – BodhiByte

+0

Si vous souhaitez sérialiser un objet java sur json. Je suggère Gson https://sites.google.com/site/gson/gson-user-guide. C'est vraiment bien, surtout quand on désérialise de JSON en objet Java. –

0

pourquoi ne pas essayer:

HttpClient httpclient = new DefaultHttpClient(); 
HttpPost httppost = new HttpPost(url); 
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
HttpResponse response = httpclient.execute(httppost); 
HttpEntity entity = response.getEntity(); 
is = entity.getContent(); 
+1

aussi je recommande Json pour l'analyse des données –

+0

Donc, je peux poster un objet (paires de valeurs de nom) à un serveur et le lire à partir d'un servlets? Est-ce que cela peut fonctionner avec une table de hachage? – BodhiByte

+0

Si vos données d'objet ont juste quelques champs tels que ProductID, Price, alors, je pense que vous pouvez les envoyer comme paires de valeurs clés. Cependant, si vous avez beaucoup de champs, je crois que j'utilise json et que la bibliothèque prenne soin de reconstruire l'objet sur le serveur pour vous. :) –

0

Vous pouvez l'utiliser pour afficher une entité au serveur:

HttpClient httpClient = new DefaultHttpClient(); 
    HttpPost postRequest = new HttpPost(url); 
    postRequest.setEntity(entity); 
    try { 

     HttpResponse response = httpClient.execute(postRequest 
       ); 
     String jsonString = EntityUtils.toString(response 
       .getEntity()); 
     Log.v(ProgramConstants.TAG, "after uploading file " 
       + jsonString); 
     return jsonString; 

    } catch (ClientProtocolException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

Une entité peut être paire de valeurs de nom:

List<NameValuePair> nvps = new ArrayList<NameValuePair>(); 
nvps.add(new BasicNameValuePair("key1", value1)); 
nvps.add(new BasicNameValuePair("key2", value2)); 
Entity entity=new UrlEncodedFormEntity(nvps, HTTP.UTF_8) 

Ou vous pouvez envoyer une entité avec bytearray.

Bitmap bitmapOrg=getBitmapResource(); 
ByteArrayOutputStream bao = new ByteArrayOutputStream(); 
bitmapOrg.compress(Bitmap.CompressFormat.JPEG, 90, bao); 

byte[] data = bao.toByteArray(); 

MultipartEntity entity=new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE) 
entity.addPart("file", new ByteArrayBody(data, "image/jpeg", 
         "file")); 

Si vous souhaitez poster JSON au serveur:
S'il vous plaît vérifier ce lien How do I send JSon as BODY In a POST request to server from an Android application?
Pour sérialisation et désérialisation objet java, je recommande https://sites.google.com/site/gson/gson-user-guide#TOC-Using-Gson espère vraiment pouvoir vous aider à voir un aperçu d'envoyer des données à serveur

+0

merci je vais regarder dans les messages aux serveurs et tenter d'écrire une servlet. Une table de hachage peut-elle également être une entité? – BodhiByte

+0

Oui, vous pouvez créer un objet NameValuePair à partir de votre hashtable. Puis construisez UrlEncodedFormEntity avec cet objet NameValuePair –

Questions connexes