Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 临时存储JSON对象,并在互联网可用时发布到Volley_Android_Json_Rest_Android Volley - Fatal编程技术网

Android 临时存储JSON对象,并在互联网可用时发布到Volley

Android 临时存储JSON对象,并在互联网可用时发布到Volley,android,json,rest,android-volley,Android,Json,Rest,Android Volley,我在应用程序中使用了Volley。我正在使用RESTApi向服务器发送数据。这是对服务器的JSONPOST请求 private void add() { String NetworkStatus = biz.fyra.bookapp.utils.NetworkStatus.checkConnection(getContext()); if (NetworkStatus.equals("false")) { alert.noInternetA

我在应用程序中使用了
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);
        }
    }  
private void add(){
字符串NetworkStatus=biz.fyra.bookapp.utils.NetworkStatus.checkConnection(getContext());
if(NetworkStatus.equals(“false”)){
alert.noInternetAlert(getActivity());
}否则{
JSONObject info=新的JSONObject();
试一试{
信息输入(“姓名”,全名);
信息输入(“电话”,美食家联系方式);
}捕获(JSONException e){
e、 printStackTrace();
}
JsonObjectRequest=newJSONObjectRequest(request.Method.POST,apirls.ADD,info,new Response.Listener()){
@凌驾
公共void onResponse(JSONObject响应){
}
},new Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
}
}) {
};
AppController.getInstance().addToRequestQueue(请求);
}
}  

如果互联网可用,我可以将数据发布到服务器。但若互联网不可用,我需要将这个JSON对象临时存储在某个地方,当互联网可用时,我需要将所有JSON对象发布到本地存储的服务器上。如何实现这一点?

要实现这一点,您必须遵循以下步骤

  • 检查互联网是否已连接
  • 如果已连接internet,请发送电话
  • 如果未连接internet,您可以将Json转换为字符串并保存它 在共享首选项或数据库中
  • 然后,您必须创建一个广播接收器,用于检查internet连接和
  • 当您收到活动internet的消息时,您需要发送挂起的数据 到服务器 更新 用于创建广播接收器

    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文件中的应用程序标记中添加意图过滤器

    <receiver android:name=".NetworkChangeReceiver" >
        <intent-filter>
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
        </intent-filter>
    </receiver>
    

    要实现这一点,您必须遵循以下步骤

  • 检查互联网是否已连接
  • 如果已连接internet,请发送电话
  • 如果未连接internet,您可以将Json转换为字符串并保存它 在共享首选项或数据库中
  • 然后,您必须创建一个广播接收器,用于检查internet连接和
  • 当您收到活动internet的消息时,您需要发送挂起的数据 到服务器 更新 用于创建广播接收器

    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文件中的应用程序标记中添加意图过滤器

    <receiver android:name=".NetworkChangeReceiver" >
        <intent-filter>
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
        </intent-filter>
    </receiver>
    
    
    
    您是否尝试过使用
    作业调度器
    ?否。请提供合适的链接供我参考。请参阅:这是:您可以在singleton类中存储json对象。它只会在应用程序运行之前存储值。Hi@Satyam,on error listener将输入的json存储在数据库中,并为internet连接编写listener,如果用户从脱机状态进入联机状态,则将所有数据推送到服务器您是否尝试使用
    作业调度器
    ?否。请为我提供合适的链接以供参考。请参阅:这是:您可以在singleton类中存储json对象。它只会在应用程序运行之前存储值。Hi@Satyam,on error listener将输入的json存储在数据库中,并为internet连接编写listener,如果用户从脱机状态进入联机状态,请将所有数据推送到服务器。如果您在以下步骤中需要帮助,请告诉我。您可以帮助我使用广播接收器检查Internet何时可用吗?请检查我的更新答案。您将接收广播是onreceive方法,然后您可以执行所需的操作。如果您在以下步骤中需要帮助,请告诉我。您可以帮助我使用广播接收器检查互联网何时可用吗?请检查我的更新答案。您将接收广播是onreceive方法,然后您可以执行所需的操作。