YouTube Video HTTP content-length



  • hi

    HttpQueryInfoA schlägt bei mir fehl, wenn ich den content-length des http headers eines youtube videos auslesen möchte.

    mein code:

    BOOL GetWebResource(LPCSTR lpszAddress)
    {
    	if (!lpszAddress)
    		return FALSE;
    
    	HINTERNET hInet = InternetOpenA("DL.Web.Resource", 0, NULL, NULL, INTERNET_OPEN_TYPE_DIRECT);
    	if (!hInet)
    		return FALSE;
    
    	HINTERNET hURL = InternetOpenUrlA(hInet, lpszAddress, NULL, 0, 0, NULL);
    	if (!hURL) {
    		InternetCloseHandle(hInet);
    		return FALSE;
    	}
    
    	DWORD lpvBuffer;
    	DWORD dwBufferLen = sizeof(lpvBuffer);
    
    	if (!HttpQueryInfoA(hURL, HTTP_QUERY_CONTENT_LENGTH | HTTP_QUERY_FLAG_NUMBER, &lpvBuffer, &dwBufferLen, NULL)) {
    		InternetCloseHandle(hInet);
    		InternetCloseHandle(hURL);
    		return FALSE;
    	}
    
    	printf("success: %d\n", GetLastError());
    
    	return TRUE;
    }
    
    GetWebResource("http://www.youtube.com/watch?v=GyT_KyAqDEc");
    

    getlasterror meldet:
    ERROR_WINHTTP_HEADER_NOT_FOUND

    12150

    The requested header cannot be located.

    wobei ich aber sicher bin, dass es ein http header gibt.

    wo liegt das problem? der code funktioniert ja ansich mit anderen web resourcen.

    danke im voraus



  • Ich habe keine Länge bekommen:

    HTTP/1.0 200 OK
    Date: Sat, 18 Jan 2014 19:06:36 GMT
    Server: gwiseguy/2.0
    X-Frame-Options: SAMEORIGIN
    Set-Cookie: PREF=f1=50000000; path=/; domain=.youtube.com; expires=Fri, 19-Sep-2014 06:59:36 GMT
    Set-Cookie: YSC=7jfmaQLZGNQ; path=/; domain=.youtube.com; httponly
    Set-Cookie: VISITOR_INFO1_LIVE=jdkKlNSE0yc; path=/; domain=.youtube.com; expires=Fri, 19-Sep-2014 06:59:36 GMT
    Content-Type: text/html; charset=utf-8
    X-XSS-Protection: 1; mode=block; report=https://www.google.com/appserve/security-bugs/log/youtube
    X-Content-Type-Options: nosniff
    Expires: Tue, 27 Apr 1971 19:44:06 EST
    P3P: CP="This is not a P3P policy! See http://support.google.com/accounts/bin/answer.py?answer=151657&hl=de-DE for more info."
    Cache-Control: no-cache
    Alternate-Protocol: 80:quic
    X-Cache: MISS from judith
    X-Cache-Lookup: MISS from judith:3128
    Via: 1.0 judith (squid/3.0.STABLE5)
    Proxy-Connection: close

    mfg Martin



  • lol, d.h., dass ich das ende quasi selbst berechnen muss, wuerde ich mal sagen.



  • egewggaqgfea schrieb:

    lol, d.h., dass ich das ende quasi selbst berechnen muss, wuerde ich mal sagen.

    Du muß halt die Ressource laden und dann deren Länge bestimmen. Vielleicht gibt sich ja YouTube die Mühe, Dir die Länge zu ermitteln, wenn Du eine persistent connection aufbaust. Das habe ich aber nicht getestet, weil das von dem von mir benutzten Programm nicht unerstützt wird.

    mfg Martin



  • Content-Length zu senden ist kein Muss.

    Wahrscheinlich kennt youtube die Länge vor dem Senden gar nicht, da der Inhalt dynamisch erstellt wird.


Anmelden zum Antworten