データ (JSON 文字列) を Web サーバーに POST する必要があるアプリに取り組んでいます。私はApache HTTPクライアントを使用してこれを行っています(以下のコードを添付)。インターネット接続がある場合はすべて正常に動作しますが、プロジェクトの仕様では、インターネット接続がない場合はデータをローカルにキャッシュし、サーバーに接続できるまで待機する必要があります。
ここに私の質問があります: 1. JSON 文字列をローカルにキャッシュし、インターネット接続を取得したときに途中で送信する最良の方法は何ですか? 私が考えることができる唯一の方法は、サーバーへの接続が見つかるまでそれらをデータベースに保存することです。
- インターネットに接続しているかどうかを確認するにはどうすればよいですか?
POST のコードはこちらです。データを取得する必要がある場合は、例外ハンドルの「接続なし」エラー ダイアログの代わりにそれを行う必要があると想定しています。
Thread t = new Thread()
{
public void run()
{
Looper.prepare(); //For Preparing Message Pool for the child Thread
HttpClient client = new DefaultHttpClient();
HttpConnectionParams.setConnectionTimeout(client.getParams(), 10000); //Timeout Limit
HttpResponse response;
try {
HttpPost post = new HttpPost("http:xxxxx");
StringEntity se = new StringEntity( flat.toString());
se.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
post.setEntity(se);
response = client.execute(post);
// /*Checking response */
if(response!=null){
InputStream in = response.getEntity().getContent(); //Get the data in the entity
}
} catch(Exception e)
{
e.printStackTrace();
//createDialog("Error", "Cannot Estabilish Connection");
Toast.makeText(getApplicationContext(), "cannot establish concetion",Toast.LENGTH_SHORT).show();
}
Looper.loop(); //Loop in the message queue
}
};
t.start();