2016-05-20 2 views
0

Я делаю запрос в веб-службе.Нет ответа от сервера

Как я буду тестировать случай, когда от сервера нет ответа (возможно, сервер выключен)?

Я имею в виду, как я могу проверить его на эмуляторе: есть ли способ отправить запрос и заблокировать ответы, чтобы увидеть, как мое приложение обрабатывает этот случай? И что мне делать в таком случае?

+2

Если вы находитесь в эмуляторе, просто отключите сетевое соединение на своем главном компьютере - отключите Wi-Fi и отсоедините сетевой кабель. _что я должен делать в таком случае - это то, что вы должны решить на основе требований вашего приложения. Может отображаться сообщение об ошибке пользователю, возможно, подождите и повторите попытку позже, возможно, просто по умолчанию что-то локальное –

+0

вы можете подключиться к сети в эмуляторе. Также у вас должны быть тайм-ауты. – Raghunandan

+0

Переключая сетевое соединение в эмуляторе, я получаю исключение в запросе, который я делаю. Я использую сервис Kaltura, и ошибка: 'E/com.kaltura.client.KalturaClientBase: Неустранимая транспортная ошибка: не удается разрешить хост« www.kaltura.com »: нет адреса, связанного с именем хоста». Я хочу проверить случай, когда я не получу ответа. Это ошибка таймаута? – Mes

ответ

1

Рассмотрим следующий код:

 try { 
      DefaultHttpClient httpclient = getClient(); 

      HttpGet request = new HttpGet(); 
      SchemeRegistry schemeRegistry = httpclient 
        .getConnectionManager().getSchemeRegistry(); 
      schemeRegistry.register(new Scheme("https", 
        new TlsSniSocketFactory(), 443)); 
      URI website = new URI(getString(R.string.u3)); 

      request.setURI(website); 
      HttpResponse response = httpclient.execute(request); 
      in = new BufferedReader(new InputStreamReader(response 
        .getEntity().getContent())); 


      result = in.readLine(); 
      // Log.d(TAG, "Version Check result = " + result); 



     } catch (Exception e) { 
      e.printStackTrace(); 
      // Log.e(TAG, "Error in http connection " + e.toString()); 
     } 

Вам необходимо установить тайм-аут & когда сервер выключен, он будет, вероятно, идти в улове блок, где вы можете делать все, что вы хотите делать, когда сервер вы не получили ответа от сервера

0
   StringRequest stringRequest=new StringRequest(Request.Method.POST,reg_url, 
       new Response.Listener<String>() { 

        @Override 
        public void onResponse(String response) { 

         try { 
          JSONArray jsonArray=new JSONArray(response); 
          JSONObject jsonObject=jsonArray.getJSONObject(0); 

          String message=jsonObject.getString("message"); //message is to be send by server 
          builder.setTitle("Server Response"); 
          Toast.makeText(this,message,Toast.LENGTH_LONG).show(); 

         } catch (JSONException e) { 
          e.printStackTrace(); 
         } 


        } 
       }, new Response.ErrorListener() { 
        @Override 
        public void onErrorResponse(VolleyError error) { 

        } 
       }); 
Смежные вопросы