2012-08-27 20 views
7

kullanarak URLs durum kodu almanın en hızlı yolu nedir? URL'leri HttpClient kullanarak almak için en hızlı yöntem nedir? Sayfayı/dosyayı indirmek istemiyorum, sadece sayfanın/dosyanın var olup olmadığını bilmek istiyorum? (Eğer bir yönlendirmeyse, yönlendirmeyi takip etmesini istiyorum)HttpClient

cevap

6

HEAD numaralı telefonu arayın. Temelde sunucunun bir beden döndürmediği bir GET çağrısı. Onların belgelerinden Örnek:

HeadMethod head = new HeadMethod("http://jakarta.apache.org"); 
// execute the method and handle any error responses. 
... 
// Retrieve all the headers. 
Header[] headers = head.getResponseHeaders(); 

// Retrieve just the last modified header value. 
String lastModified = head.getResponseHeader("last-modified").getValue(); 
0

Sen kullanabilirsiniz:

HeadMethod head = new HeadMethod("http://www.myfootestsite.com"); 
head.setFollowRedirects(true); 

// Header stuff 
Header[] headers = head.getResponseHeaders(); 

web sunucu BAŞ komutu desteklediğinden emin olun yap. HTTP 1.1 Spec

0

yılında

bakınız Bölüm 9.4 java.net.HttpURLConnection ile bu Info alabilirsiniz:

İşte
URL url = new URL("http://stackoverflow.com/"); 
URLConnection urlConnection = url.openConnection(); 
if (urlConnection instanceof HttpURLConnection) { 
    int responseCode = ((HttpURLConnection) urlConnection).getResponseCode(); 
    switch (responseCode) { 
    case HttpURLConnection.HTTP_OK: 
     // HTTP Status-Code 302: Temporary Redirect. 
     break; 
    case HttpURLConnection.HTTP_MOVED_TEMP: 
     // HTTP Status-Code 302: Temporary Redirect. 
     break; 
    case HttpURLConnection.HTTP_NOT_FOUND: 
     // HTTP Status-Code 404: Not Found. 
     break; 
    } 
} 
8

ben çok seviyorum ki, HttpClient durum kodu almak nasıl:

public boolean exists(){ 
    CloseableHttpResponse response = null; 
    try { 
     CloseableHttpClient client = HttpClients.createDefault(); 
     HttpHead headReq = new HttpHead(this.uri);      
     response = client.execute(headReq);   
     StatusLine sl = response.getStatusLine();   
     switch (sl.getStatusCode()) { 
      case 404: return false;      
      default: return true;      
     }   

    } catch (Exception e) { 
     log.error("Error in HttpGroovySourse : "+e.getMessage(), e); 
    } finally { 

     try { 
      response.close(); 
     } catch (Exception e) { 
      log.error("Error in HttpGroovySourse : "+e.getMessage(), e); 
     } 
    }  

    return false; 
} 
+1

Bir CloseableHttpResponse örneği sağladığınız için teşekkür ederiz. "404" bir sihirli sayı olsa da - bunun yerine Apache'nin HttpStatus sınıfı anahtarını (sl.getStatusCode()) { durumda HttpStatus.SC_CREATED kullanabilirsin: false; varsayılan: true; } –