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
7
A
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:
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;
}
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; } –