On Jul 21, 2007, at 11:58, Joakim Krassman wrote: > Is there > anyone that do have a code snippet that actually tells me the exactly > weight > of all the content that the httpclient downloaded?
There is no way for any client to know the entire weight of all content without requesting each piece individually. Like Arno said in his response, you can call HEAD for each item and check the Content-Length header returned (if supported) without having to actually download everything. You _do_ need to download the main document first in order to parse it. This is how the HTTP protocol works; the fact that Web browsers make it look seemlessly as a single request and operation is mostly behind-the-scenes "magic". If you pay close attention, particularly on a slow connection, you'll see the "Progress Bar" in your browser stretch and contract constantly as it updates the "total size" when it finds images and other media while parsing the document (that's why usually the text is rendered before the images start loading). The HttpCli component in ICS does not provide this feature automatically, but it shouldn't be too hard to implement. For parsing the document and extracting all urls for image, css, js, and other external resources, you can use any one of the many open source HTML parsers out there (I even believe the JEDI project has a couple). Implementing your own parser shouldn't be that hard either: recall that you are not interested in understanding all layout information; you are only looking for things that look like <img src=...> and the like. So, to recap, here's a simple algorithm for doing what you requested: 1. GET document; 2. TOTAL_BYTES = Content-Length; 3. ResourceList := extract_resources(document); 4. For i := 0 To (ResourceList.Count - 1) 4.a. HEAD resource[i]; 4.b. TOTAL_BYTES = TOTAL_BYTES + Content-Length; 5. Next; dZ. -- DZ-Jay [TeamICS] http://www.overbyte.be/eng/overbyte/teamics.html -- To unsubscribe or change your settings for TWSocket mailing list please goto http://www.elists.org/mailman/listinfo/twsocket Visit our website at http://www.overbyte.be