我有一个与Web服务交互的Android应用程序。我从服务中下载了一个图像,作为base64字符串。这是一个过程:
:: App每10秒轮询一次wifi
::在wifi内>发送请求以获取任何新图像
::服务器获取请求,处理图像,更新数据库(都非常快)
:: Server将image转换为base64并返回字符串
:: App保存图片
很简单是吗?我遇到的问题是,应用程序会短暂进入wifi范围,然后在获得响应之前退出。这意味着图像被称为在数据库中下载(如果不是这个系统中的大问题)。
有没有一种方法可以确保响应能够通过?我是制作第二个更新数据库的Web方法的最佳选择,该方法仅在下载图像后才从应用程序调用?
我正在使用SOAP进行这些调用,即ksoap2导入。
我放下好的方式,还是有更好的方式?
CallSoap.java:
public String Call(String variable1)
{
SoapObject request = new SoapObject(WSDL_TARGET_NAMESPACE,OPERATION_NAME);
PropertyInfo pi=new PropertyInfo();
pi.setName("variable1");
pi.setValue(variable1);
pi.setType(String.class);
request.addProperty(pi);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
HttpTransportSE httpTransport = new HttpTransportSE(SOAP_ADDRESS);
Object response=null;
try
{
httpTransport.call(SOAP_ACTION, envelope);
response = envelope.getResponse();
}
catch (Exception exception)
{
response=exception.toString();
}
return response.toString();
}
Caller.java
public class Caller extends Thread
{
public CallSoap cs;
public String variable1= "variable1";
public void run()
{
try
{
cs=new CallSoap();
String resp=cs.Call(variable1);
MySOAPCallActivity.rslt=resp;
}catch(Exception ex)
{
MySOAPCallActivity.rslt=ex.toString();
}
}
}
主要课程:
try{
rslt="START";
Caller c=new Caller();
c.variable1=variable1;
c.join();
c.start();
while(rslt=="START")
{
try
{
Thread.sleep(10);
}
catch(Exception ex)
{
}
}
}
catch(Exception ex){
}