android - 当互联网连接恢复时通过 post 将数据发送到服务器

标签 android json parsing

在我的应用程序中,我通过 json 格式的 post 方法将数据发送到服务器。 在这里你可以看到我的代码。

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 次的所有值都存储在其他地方,当连接到来时,网络服务将命中,所有数据将被发送到服务器。这是我的实际问题。请告诉我什么做。提前致谢!

最佳答案

您可以创建一个数据库并将这些值存储在那里。现在发送这些值后,您必须将它们从数据库中删除。

现在,创建一个始终检查网络状态的广播类。当网络出现时,它将检查该数据库并将它们发送到服务器。您可以相应地对其进行编码。

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

将其放入 list 中。

    <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>

这可能会有帮助!!!!!!

关于android - 当互联网连接恢复时通过 post 将数据发送到服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17184687/

相关文章:

安卓原始数组

javascript - 验证 JSON 时出现问题

jquery - 未捕获的类型错误 :Undefined is not a function

language-agnostic - 编译器在解析过程中将大部分时间花在哪里?

java - resolveUri 在错误的位图 uri 上失败(Android 工作室)

android - Android Mediaplayer不会停止

android - 在两个元素之间添加一个 listView

php - 在 PHP 中创建 JSON 数组

javascript - 将带有数学公式的字符串转换为对象树?

json - Google Apps 脚本 : Returning "null" when trying to select a specific object in a API response but I can see it in the original response