Witam

Pobieram pliki przez Geta http. Mam jakiegoś id i pięknie ładnie content ląduje na dysku.

Problem zaczyna się z rozszerzeniem pliku (nigdy tak naprawdę nie wiem jaki rodzaj pliku kryje się za id).

  URLConnection uRLConnection = url.openConnection();
            String contentType = uRLConnection.getContentType();

Tego używam ale jest zawodne. Sprawdza się dla pdf czy rtf. Dla doc już dostaje application/msword ale czasami dla innego doc'a dostaje w ogóle coś dziwnego. Nie wspomnę już o docx bo to jest jakaś masakra:
application/vnd.openxmlformats-officedocument.wordprocessingml.document

Ale i tak czasami się okazuje, że tam coś jest doklejone albo i ine.

I teraz moje pytanie - skąd taki download menager pierwszy z brzegu zawsze wie co ściąga.

Jak to zrobić w Javie?

Znalazłem to:

http://www.rgagnon.com/javadetails/java-0487.html

Ale też z takim docx sobie nie radzi.

W sumie powinno ta informacja być zawarta w Content Diposition, ale weźmy taki przykład:

String urlDocx = "http://www.dot.state.ga.us/do[...]0Guide%20for%20Documents.docx";

Tu akurat nie ma id ale ok.

A nagłówek przychodzący ma takie coś:

{null=[HTTP/1.1 200 OK], ETag=["{45810959-1A26-437A-AB5E-51B0715C66A4},92"], Content-Length=[32933], Last-Modified=[Wed, 09 Nov 2011 22:02:28 GMT], Connection=[Keep-Alive], X-Powered-By=[ASP.NET], Server=[Microsoft-IIS/6.0], Cache-Control=[private,max-age=0], ResourceTag=[rt:[email protected]], Date=[Sat, 12 Nov 2011 11:38:20 GMT], Public-Extension=[http://schemas.microsoft.com/repl-2], Exires=[Fri, 28 Oct 2011 11:38:20 GMT], Content-Type=[application/vnd.ms-word.document.12]}

I co skąd ja mam wiedzieć że to docx ?