目前,我正在使用Android应用程序,该应用程序使用公共IP地址显示本地服务器的报告。我已经设计了Web服务(C#)来从我的服务器访问SQL Server中的数据。此外,我已经从移动端准备好了app和sqlite数据库,系统可以很好地处理我已经转储到sqlite上的示例数据。但是,我希望用户定期(每周一次)使用webservice或任何首选方法从我的服务器更新/同步数据到移动设备上的sqlite数据库。
但是,我不知道如何从服务器发送/接收最新数据并在移动端更新sqlite而不会中断用户。有时,用户也应该能够自己检查更新。我已经阅读了有关JSON和帐户身份验证的信息,但无法获得有关如何访问我的服务器(使用公共IP)和更新数据的概念。
处理我情况的最佳方法是什么?任何可以告诉我如何进行同步的参考或教程?
提前致谢
我试过这个,但由于某种原因它崩溃了:
public void syncClickHandler(View view)
{
AsyncCallWS task=new AsyncCallWS();
task.execute();
}
private String response="";
private class AsyncCallWS extends AsyncTask<String, Void, String>
{
@Override
protected String doInBackground(String... params) {
response=Connect.Hello("TestName","Hello");
if(response!=null)
return response;
return "Nothing returned!";
}
@Override
protected void onPostExecute(String result) {
Toast.makeText(getBaseContext(), result ,Toast.LENGTH_LONG).show();
}
@Override
protected void onPreExecute() {
}
@Override
protected void onProgressUpdate(Void... values) {
}
}
访问网络服务的类:
private static String NAMESPACE = "http://tempuri.org/";
private static String URL = "http://10.0.2.2:1674/Services.asmx";
private static String SOAP_ACTION = "http://tempuri.org/";
public static String Hello(String name, String webMethName)
{
String resTxt = null;
SoapObject request = new SoapObject(NAMESPACE, webMethName);
PropertyInfo pi= new PropertyInfo();
pi.setName("name");
pi.setValue(name);
pi.setType(String.class);
request.addProperty(pi);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
try
{
androidHttpTransport.call(SOAP_ACTION+webMethName, envelope);
SoapObject response = (SoapObject)envelope.getResponse();
String n = "";
Object property = response.getProperty(0);
if (property instanceof SoapObject) {
SoapObject countryObj = (SoapObject) property;
n=countryObj.getProperty("name").toString();
}
resTxt=n;
} catch (Exception e) {
e.printStackTrace();
resTxt = "Error occured";
}
return resTxt;
}
可能是什么问题?
答案 0 :(得分:0)
答案 1 :(得分:0)
看看朋友,它很简单;您只需创建一个同步按钮,用户将单击该按钮。您使用C#Web服务并将它们放入设备的本地sqlite数据库中。从服务器收到一组新数据时,只需删除设备中的现有本地表,然后从Web服务中插入新获取的数据。 Web服务的响应可能是JSON或XML。
应使用异步任务完成对Web服务的请求。
答案 2 :(得分:0)