3

私のアプリケーションでは、post メソッドを使用して json 形式でデータをサーバーに送信しています。ここで私のコードを見ることができます。

JSONObject object1 = new JSONObject();
        object1.put("homesafe_events_version", "1.0");

        JSONObject object = new JSONObject();
        object.put("PhoneNumber", phoneNumber);
        object.put("EventTypeID", Integer.parseInt(eventTypeId));
        object.put("FreeFromText", "");
        object.put("EventTime", eventTime );
        object.put("Latitude", latitude);
        object.put("Longitude", longitude);
        object.put("Altitude", Double.parseDouble(df.format(altitude)));
        object.put("HorizAccuracy",Double.parseDouble(df.format(horizAccuracy)));
        object.put("VertAccuracy", vertiAccuracy);
        object.put("Speed", speed);
        object.put("Heading", Double.parseDouble(df.format(heading)));
        object.put("BatteryStatus", batteryStatus);

        object1.put("Event", object);

        String str = object1.toString();
        HttpClient client = new DefaultHttpClient();

        String encodedURL = URLEncoder.encode(str, "UTF-8");
        HttpPost request = new HttpPost(url);
        List<NameValuePair> value = new ArrayList<NameValuePair>();

        value.add(new BasicNameValuePair("Name", encodedURL));

        // UrlEncodedFormEntity entity=new UrlEncodedFormEntity(value);
        StringEntity entity = new StringEntity(str, "UTF8");
        request.setHeader("Content-Type", "application/json");
        request.setEntity(entity);

        HttpResponse response = client.execute(request);

        HttpEntity resEntity = response.getEntity();
        response_str = EntityUtils.toString(resEntity);

すべてが正常に機能しています。私のアプリにはボタンがあります。そのボタンをクリックすると、いくつかの値が計算され、パラメーターに渡されてサーバーに送信されます。インターネットが利用できず、そのボタンを 5 回押したとします。この場合、5回計算されたすべての値は別の場所に保存され、接続が来るとWebサービスがヒットし、すべてのデータがサーバーに送信されます.これは私の実際の問題です.何をすべきか教えてください.前もって感謝します !!

4

3 に答える 3

3

データベースを作成し、そこにそれらの値を保存できます。これらの値を送信したら、データベースからそれらを削除する必要があります。

ここで、常にネットワークステータスをチェックするブロードキャストクラスを作成します。ネットワークが来ると、そのデータベースをチェックしてサーバーに送信します。それに応じてコーディングできます。

public class NetworkStatusChangeReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
    boolean status = Utility.isInternetAvailable(context);
    if (!status)
    {
        Toast.makeText(context, "Network Error !", Toast.LENGTH_SHORT).show();
    }
 }
}

これをマニフェストに入れます。

    <receiver    
        android:name="NetworkStatusChangeReceiver"
        android:label="NetworkStatusChangeReceiver" >
        <intent-filter>
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
            <action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
        </intent-filter>
    </receiver>

これは役に立つかもしれません!!!!!

于 2013-06-19T07:25:04.283 に答える