I have the perfect solution for what you are describing.
There are over 14,000 unique user agents, each with varying capabilities.
We have a JavaBean called BrowserHawk4J which automatically sets over 40
properties including file upload, SSL, SSL cipher suite, style sheets,
DHTML, JavaScript, JavaScriptVer, cookies, etc according to this information.
It does this by matching the user agent string with an internal knowledge
base of capabilities, as well as by using built-in intelligence to determine
this information even if an exact match in the knowledge base is not
available.
BrowserHawk has existed as an ActiveX/COM component for 1.5 years and is used
extensively by ASP developers. We recently ported it to Java as a bean for
use
from servlets and JSP. I think you'll find it does exactly what you're
looking for.
You can find the Javadocs at
http://www.cyscape.com/com/cyscape/browserhawk/browserhawk.html
You can download BrowserHawk4J from
http://cyscape.com/products/bhawk/download.asp.
Best,
Richard Litofsky
cyScape, Inc.
http://www.cyscape.com
Browser compatibility made easy!
> -----Original Message-----
> "Andr�s Aguiar" wrote:
>
> > Does anyone know if there's a list of the return values of the
> 'User-Agent'
> > header for different browsers?
>
> Nope, and I'm not sure you will find one, either. What you could
> do though,
> assuming you had a finite list of capabilities you want to test the client
> for, is start making your own database at runtime.
>
> First of all, you need to encapsulate what is going to be
> different for each
> user-agent in a series of objects. For example, assuming you had a known
> number of abilities that you wanted to test for, and were interested in
> grouping user-agents by particular combinations of these
> abilities, you could
> do something like the below.
>
> Anyway, if you follow the below idea, you will have a servlet
> that handles new
> user-agents in a default manner, notes them down as it comes
> across them, and
> emails you about the new ones so you can check its assumptions.
> If they turn
> out to be wrong, you edit a file and restart the servlet.
>
> Regards,
> David.
>
>
> recipe:
>
> Make an object called CapabilitySet. Make it nameable with methods for
> get/setting a String 'name'. Add methods for the capabilities you are
> interested in:
>
> eg. boolean supportsJavaRMI();
> eg. boolean supportsCascading Sylesheetes();
>
> Make yourself a mechanism to associate names with capabilities (eg. in a
> .properties file - or, if you are adventurous, by writing the
> CapabilitySet as
> a bean). You will have a small number of capability sets: called
> "text-only",
> "basic-graphics", "impure-Java", "impure-Java-with-VBScript",
> "impure-Java-with-JavaScript", "pure-Java", "pure-Java-with-CSS1",
> "pure-Java-with-CSS2", "pure-Java-with-XML-and-XSL-and-Im-dreaming", etc.
> etc., according to your lines of interest. For each of them, set
> the relevant
> attributes. Make sure you call one "default".
>
> Make yourself a mechanism which will let you find a particular
> CapabilitySet
> by name. (eg. findCapabilitySetByName(String name))
>
> Then make an object called UserAgentCapability. It is a Properties object
> that contains the names of known User Agents for it's key.
> Against each key,
> store the name of the CapabilitySet you wish to use.
>
> 1. For each service() request (or the first request of a session,
> if you are
> using sessions), grap the 'User Agent' value.
>
> 2. Test to see if the UserAgentCapability object knows this
> agent, and if not
> already held by it:
> a)add it, assign it to some default CapabilitySet name, save the
> UserAgentCapabilities property object, and send yourself an email
> that "user
> agent X was added with default capabilities: a, b, and c. Please
> edit file
> F.properties on sevlet host H and restart the serlvet S to change this."
> ....OR (if the user-agent name is found)
> b) get the CapabilitySet with
> findCapabilitySetByName(myUserAgentCapability.get(userAgentName))
>
> 3. perform conditional processing based on calls to supportsXML()
> etc. on the
> CapabilitySet.
>
> Make sure your servlet uses init parameters to specify the name of the
> .properties file to use, as well as the name of an smtp server,
> and your email
> address.
>
> __________________________________________________________________
> _________
> To unsubscribe, send email to [EMAIL PROTECTED] and include
> in the body
> of the message "signoff SERVLET-INTEREST".
>
> Archives: http://archives.java.sun.com/archives/servlet-interest.html
> Resources: http://java.sun.com/products/servlet/external-resources.html
> LISTSERV Help: http://www.lsoft.com/manuals/user/user.html
>
___________________________________________________________________________
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff SERVLET-INTEREST".
Archives: http://archives.java.sun.com/archives/servlet-interest.html
Resources: http://java.sun.com/products/servlet/external-resources.html
LISTSERV Help: http://www.lsoft.com/manuals/user/user.html