私はこれを2週間で一番うまくやってきました。最初は単純なObjectOutputStreamクライアント(サーバープログラム)を作成しましたが、クライアントはAndroidアプリケーションですが、動作しません(オブジェクトは接続ではなく読み込みます)。名前値のペアをサーバーに送信する最良の方法は何ですか?
ここで、私はこの簡単な作業を実行するために他にどのようなアプローチをとることができるのか混乱していますか?誰でも助けてくれますか?
私はこれを2週間で一番うまくやってきました。最初は単純なObjectOutputStreamクライアント(サーバープログラム)を作成しましたが、クライアントはAndroidアプリケーションですが、動作しません(オブジェクトは接続ではなく読み込みます)。名前値のペアをサーバーに送信する最良の方法は何ですか?
ここで、私はこの簡単な作業を実行するために他にどのようなアプローチをとることができるのか混乱していますか?誰でも助けてくれますか?
投稿メソッドを使用して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();
あなたはデータを送信するためにJSONのstirngを試すことができます。 JSONの使い方にはたくさんのものがありますが、多くのAPIもあります。 JSONSimpleは私が提案できるものです。その本当に簡単です。
私はJSONを見てきましたが、私が理解できるチュートリアルを見つけることに失敗しました。それらはすべて本当に畳み込まれているようです。 – BodhiByte
Javaオブジェクトをjsonにシリアル化する場合。 Gsonのhttps://sites.google.com/site/gson/gson-user-guideをお勧めします。これは本当に良いです、特にjsonからjavaオブジェクトにdeserializingするとき。 –
なぜあなたはこれを試してみません:
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();
私はデータを解析するためのJsonを勧めます –
私はオブジェクト(名前の値のペア)をサーバーに投稿してサーブレットから読むことができますか?これはハッシュテーブルで動作しますか? – BodhiByte
オブジェクトデータにProductID、Priceなどのフィールドが2つしかない場合は、それらをキー値のペアとして送信できると思います。しかし、フィールドがたくさんある場合は、jsonを使用してライブラリがサーバー上のオブジェクトを再構築するようにしてください。 :) –
:
: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 をお勧めは、本当にそれはあなたがにデータを送信する概要を見るのを助けることを願ってサーバー
ありがとう私はサーバーへの投稿を見て、サーブレットを書き込もうとしています。ハッシュテーブルをエンティティにすることはできますか? – BodhiByte
はい、ハッシュテーブルからNameValuePairオブジェクトを構築できます。次に、そのNameValuePairオブジェクトでUrlEncodedFormEntityを構築します。 –
サーバーに必要な要件はありますか?それ以外の場合は、HTTPサーバーを使用し、そのプロトコルを使用してデータを前後に送信することを検討します。 – claesv