2012-11-20 4 views
5
public class UrlVarificationTask extends AsyncTask<Void, Void, Integer> { 

    private String url; 
    private UrlVarificationDelegate delegate; 
    private HttpURLConnection huc; 

    public UrlVarificationTask(String url, UrlVarificationDelegate delegate) { 
     this.url = url; 
     this.delegate = delegate; 
    } 

    @Override 
    protected void onPreExecute() { 

     super.onPreExecute(); 
    } 

    @Override 
    protected Integer doInBackground(Void... params) { 
     int responseCode = 0; 
     try { 
      System.setProperty("http.keepAlive", "false"); 
      URL u = new URL(url); 
      huc = (HttpURLConnection) u.openConnection(); 
      huc.setRequestMethod("HEAD"); 
      huc.connect(); 
      responseCode = huc.getResponseCode(); 

     } catch (MalformedURLException mal) { 
      responseCode = -555; 
     } catch (IOException io) { 
      responseCode = -444; 
     } catch (Exception ex) { 
      responseCode = -333; 
      ex.printStackTrace(); 
     } 

     if (huc != null) { 
      try { 
       huc.getInputStream().close(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      huc.disconnect(); 
     } 

     Logger.debug("Response Code==" + responseCode); 
     return responseCode; 
    } 

    @Override 
    protected void onPostExecute(Integer responseCode) { 
     delegate.urlVarificationResponseCode(responseCode); 
     super.onPostExecute(responseCode); 
    } 

} 

użyłem powyżej Dode walidacji URLwalidacji URL działa dobrze, ale zachować połączenie i ograniczyć wszelkie dalsze żądania

jeśli HEAD dać mi kod odpowiedzi 200 to tylko otworzyć link do WebView.

ale raz to nazywam, utrzymuję połączenie i nie zezwalam na żadne inne żądanie http nawet po zamknięciu, co robić?

Safe use of HttpURLConnection

Odpowiedz

4
huc.setRequestProperty("keep-alive", "false"); 

ten pracuje jako HttpURLConnection Utrzymuj połączenie i stąd cann't wykonujemy poczynić dalsze żądania więc keep-alive ustawienie fałszywego rozwiązać ten problem.

1

Dla prawidłowego zamknięcia HttpURLConnection przejść do link

Przez ten adres URL jest zamknięta.