2012-02-23 8 views
0

私はこれを2週間で一番うまくやってきました。最初は単純なObjectOutputStreamクライアント(サーバープログラム)を作成しましたが、クライアントはAndroidアプリケーションですが、動作しません(オブジェクトは接続ではなく読み込みます)。名前値のペアをサーバーに送信する最良の方法は何ですか?

ここで、私はこの簡単な作業を実行するために他にどのようなアプローチをとることができるのか混乱していますか?誰でも助けてくれますか?

+0

サーバーに必要な要件はありますか?それ以外の場合は、HTTPサーバーを使用し、そのプロトコルを使用してデータを前後に送信することを検討します。 – claesv

答えて

0

投稿メソッドを使用してURLConnectionを試してみましたか? :)

またはGETメソッドは次のように:

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

あなたはデータを送信するためにJSONのstirngを試すことができます。 JSONの使い方にはたくさんのものがありますが、多くのAPIもあります。 JSONSimpleは私が提案できるものです。その本当に簡単です。

+0

私はJSONを見てきましたが、私が理解できるチュートリアルを見つけることに失敗しました。それらはすべて本当に畳み込まれているようです。 – BodhiByte

+0

Javaオブジェクトをjsonにシリアル化する場合。 Gsonのhttps://sites.google.com/site/gson/gson-user-guideをお勧めします。これは本当に良いです、特にjsonからjavaオブジェクトにdeserializingするとき。 –

0

なぜあなたはこれを試してみません:

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

私はデータを解析するためのJsonを勧めます –

+0

私はオブジェクト(名前の値のペア)をサーバーに投稿してサーブレットから読むことができますか?これはハッシュテーブルで動作しますか? – BodhiByte

+0

オブジェクトデータにProductID、Priceなどのフィールドが2つしかない場合は、それらをキー値のペアとして送信できると思います。しかし、フィールドがたくさんある場合は、jsonを使用してライブラリがサーバー上のオブジェクトを再構築するようにしてください。 :) –

0
サーバーに エンティティを投稿するためにこれを使用することができ

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(); 
    } 

アンエンティティは、名前と値のペアすることができ

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) 

また、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")); 

サーバーにJSON投稿したい場合:Javaオブジェクトをシリアライズおよびデシリアライズするために、このリンクHow do I send JSon as BODY In a POST request to server from an Android application?
をチェックしてみて下さい
を、私はhttps://sites.google.com/site/gson/gson-user-guide#TOC-Using-Gson をお勧めは、本当にそれはあなたがにデータを送信する概要を見るのを助けることを願ってサーバー

+0

ありがとう私はサーバーへの投稿を見て、サーブレットを書き込もうとしています。ハッシュテーブルをエンティティにすることはできますか? – BodhiByte

+0

はい、ハッシュテーブルからNameValuePairオブジェクトを構築できます。次に、そのNameValuePairオブジェクトでUrlEncodedFormEntityを構築します。 –

関連する問題