如何检查SOAP Web服务连接

时间:2013-04-15 06:22:54

标签: android soap

我正在使用SOAP webservice开发一个Android应用程序。在这个应用程序中,我需要检查webservice的连接性,因为如果连接可用,我必须以在线模式显示数据,如果连接不可用,我必须在离线模式下显示数据,即。我正在使用SQLlite数据库来存储来自webservice的数据

我的应用程序如何测试服务器的可用性,以控制应用程序是以联机还是脱机模式运行?

2 个答案:

答案 0 :(得分:0)

在设计时,您可以将Web浏览器指向Web服务并检查响应。如果您没有得到回复,或者没有得到您的期望,您可以使用Fiddler

获取更多详细信息

在运行时,您只需尝试在try / catch异常处理程序中访问服务器。在具有适当范围的可见内容上定义公共bool IsOnline,并在成功执行后将其设置为true,并在异常处理程序中将其设置为false。自从我使用Java以来​​已有几十年了,但这与你在几乎任何OO半语言语言中使用的方法相同,例如C#或C ++或Java或者VB。

答案 1 :(得分:0)

为此,我遵循了这个方法

  1. 我在我的网络服务(服务器)中创建 Pogo功能(网络方法)来检查 连通性

  2. 在客户端创建一个方法来调用Web方法。当我第一次进入应用程序时,我称之为客户端方法 从手机上使用客户端功能。然后等待响应。客户端方法应该被 try-catch 块包围

  3. 如果发生任何异常或超时,响应将为null并进入异常阶段。所以 购买检查响应。我根据状态设置了一个标志(布尔或整数变量) 响应(null或not null)来决定离线或在线 模式

  4. 代码示例

        public class CallSOAP {
    
    private String SOAP_ACTION="your action url";
    private String OPERATION_NAME="";//The web method OR web service you are going to call
    private final String WSDL_TARGET_NAMESPACE=SOAP_ACTION;
    private  final String SOAP_ADDRESS=Configuration.WEB_SERVICE_URL;//ip-address of serever where you host your service 
    private Exception exception;
    private String ErrorMsg="";
    private String TERST_URL="" ;
    public Object call(String MethodeName,ArrayList<PropertyInfo> Parameters){
      this.OPERATION_NAME=MethodeName;
      SoapObject request = new SoapObject(WSDL_TARGET_NAMESPACE, OPERATION_NAME);
     if(Parameters != null && Parameters.size()>0){
       for(PropertyInfo propertyInfo : Parameters){
          request.addProperty(propertyInfo);
     }
    }
    
    SoapSerializationEnvelope  envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
    envelope.dotNet= true;
    envelope.setOutputSoapObject(request);
    HttpTransportSE httpTransport =null;
    if(!this.TERST_URL.equals(""))
      httpTransport = new HttpTransportSE(this.TERST_URL);
    else
      httpTransport = new HttpTransportSE(SOAP_ADDRESS);
     Object Response =null;
     try{
        httpTransport.call(SOAP_ACTION+OPERATION_NAME, envelope);
        Response=envelope.getResponse();
      }
     catch (SocketTimeoutException ex) {
         this.ErrorMsg="Unable to connect";
          Response=null;
         this.exception=ex;
      }
      catch (IOException ie) {
       this.ErrorMsg="Unable to connect";
      Response=null;
       this.exception=ie;
      }
       catch (Exception e) {
        this.ErrorMsg="Unable to connect";
        Response=null;
        this.exception=e;
     }
          return Response;
       }
    }
    

    在代码ErrorMsg="Unable to connect";中显示连接现在不可用。因此,我将响应设置为null,您可以将此响应传递给活动并在那里检查

    参考this