1

SOAP Web サービスを使用して Android アプリケーションを開発しています。このアプリでは、Web サービスの接続を確認する必要があります。接続が利用可能な場合はオンライン モードでデータを表示する必要があり、接続が利用できない場合はオフライン モードでデータを表示する必要があるためです。Webサービスからのデータを保存するためにSQLliteデータベースを使用しています

アプリケーションがオンライン モードで実行されるかオフライン モードで実行されるかを制御するために、アプリケーションでサーバーの可用性をテストするにはどうすればよいですか?

4

2 に答える 2

0

このために、私はこの方法に従いました

  1. 接続を確認するために、Web サービス (サーバー) にPogo 関数 (Web メソッド)を作成します。

  2. クライアント側で web-method を呼び出すメソッドを作成します。初めてアプリに入るときに、クライアント関数を使用して電話からこのクライアント メソッドを呼び出します。次に、応答を待ちます。クライアント メソッドは、try-catchブロックで囲む必要があります。

  3. 例外またはタイムアウトが発生した場合、応答は null になり、例外ステージに移動します。応答を確認して購入します。オフラインまたはオンライン モードを決定するために、応答の状態(null または非 null)に基づいてフラグ (ブール値または整数変数)を設定します。

コード付きの例

    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に設定すると、この応答をアクティビティに渡して、そこで確認できます

これを参照

于 2013-04-15T07:20:37.660 に答える