我在应用程序中使用Volley
。我正在使用REST
Api向服务器发送数据。这是对服务器的JSON POST
请求。
private void add() {
String NetworkStatus = biz.fyra.bookapp.utils.NetworkStatus.checkConnection(getContext());
if (NetworkStatus.equals("false")) {
alert.noInternetAlert(getActivity());
} else {
JSONObject info = new JSONObject();
try {
info.put("name", full_name);
info.put("phone", foodie_contact);
} catch (JSONException e) {
e.printStackTrace();
}
JsonObjectRequest request = new JsonObjectRequest(Request.Method.POST, ApiUrls.ADD, info, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}) {
};
AppController.getInstance().addToRequestQueue(request);
}
}
如果可以使用Internet,则可以将数据发布到服务器。但是,如果没有Internet,则需要将该JSON对象临时存储在某个地方;当Internet可用时,我需要将所有JSON对象发布到本地存储的服务器中。如何实现呢?
答案 0 :(得分:2)
要实现此目的,您必须遵循以下步骤。
更新 用于创建广播接收器
public class NetworkChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(final Context context, final Intent intent) {
final ConnectivityManager connMgr = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
final android.net.NetworkInfo wifi = connMgr
.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
final android.net.NetworkInfo mobile = connMgr
.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if (wifi.isAvailable() || mobile.isAvailable()) {
Log.d("Network Available ", "Flag No 1");
}
}
}
然后在Menifest文件中的Application标签中添加Intent Filter
<receiver android:name=".NetworkChangeReceiver" >
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>