从android下载图片,保证得到它

时间:2013-03-04 21:49:46

标签: android web-services soap download ksoap2

我有一个与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){
            }

0 个答案:

没有答案