서버가 파일 전송을 다시 시작할 수 있는지 또는 요청을받을 수 있는지 어떻게 결정합니까?서버가 지원 요청 받기를 지원하는지 확인
내 생각은 그 적절한 결과
를 준 경우 HTTP 요청을 닫는 즉시 "2"바이트에서 GET 요청을 시작하는 헤더를 설정하는 대신 0을했다하지만 뭔가가 있다면 궁금 해서요 이 정보를 나에게 알려주는 다른 종류의 프로브에 대한 서버 응답
서버가 파일 전송을 다시 시작할 수 있는지 또는 요청을받을 수 있는지 어떻게 결정합니까?서버가 지원 요청 받기를 지원하는지 확인
내 생각은 그 적절한 결과
를 준 경우 HTTP 요청을 닫는 즉시 "2"바이트에서 GET 요청을 시작하는 헤더를 설정하는 대신 0을했다하지만 뭔가가 있다면 궁금 해서요 이 정보를 나에게 알려주는 다른 종류의 프로브에 대한 서버 응답
서버의 다운로드 재개 기능을 조사하려면 임의의 값으로 Range 헤더를 제공하는 HEAD 요청을 서버에 보낼 수 있습니다. 응답 코드가 206이면 다시 시작이 지원됩니다. 곱슬
예 :
$ curl -i -X HEAD --header "Range: bytes=50-100" http://mirrors.melbourne.co.uk/ubuntu-releases//raring/ubuntu-13.04-desktop-amd64.iso
업데이트 :
가 여기에 자바의 예입니다 :
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.HttpClient;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpHead;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicHeader;
public class ResumeChecker {
public final static void main(String[] args) throws Exception {
HttpClient httpclient = new DefaultHttpClient();
HttpHead httpRequest = new HttpHead("http://www.google.com");
httpRequest.addHeader(new BasicHeader("Range", "bytes=10-20"));
System.out.println("Executing request " + httpRequest.getURI());
HttpResponse response = httpclient.execute(httpRequest);
// Check here that response.getStatusLine() contains 206 code
}
}
그러나, 나는 mysqlf 그것을 테스트하지 않았습니다.
@의 aadel의 대답에 추가 : 서버의 대부분은 요즘 경우 Accept-Ranges: bytes
헤더로 응답
가 재개 지원합니다. RequestMaker 또는 Insomnia은 요청/응답 헤더를 검사하는 데 도움을 줄 수 있습니다.
야생에서 본 적이 있습니다. - Accept-Range : bytes로 응답하지만 원거리 다운로드를 지원하지 않는 서버 (적어도 일부 파일은 아니지만 전부는 아님). Range를 사용하여 요청을 보내면 요청한 부분 만있는 206이 아닌 200 전체 파일이됩니다. 잘못 작성된 HTTP/HTTPS 프록시 때문일 수 있습니다. 이야기의 도덕 : 헤더를 신뢰하지 마십시오. HEAD 요청을 어쨌든 만드십시오. 또는 GET의 응답 코드를 다시 확인하십시오. – Corrodias
마지막 코멘트에 대한 수정 : 필연적으로 나쁘지는 않습니다. If-Range 헤더가 서버의 파일 버전과 다른 버전의 파일을 요청하고 있음을 나타내면 200이 유효한 응답입니다. 여전히, 테이크 어웨이는 200이 Range 요청에 대한 유효한 응답이라는 것입니다. – Corrodias
어떻게 자바 아파치 라이브러리에서이 작업을 수행할까요? '새로운 BasicHeader ("Range", "bytes = 50-100")? 여분의 것 – CQM
아파치 라이브러리에 대해 모르지만 표준 lib 클래스 URL을 사용하면 connection.setRequestProperty ("Range", "bytes ="+ startvalue + "-"endValue)를 사용할 수 있습니다. –