在我的应用程序中,我通过 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/