Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How would you detect the current browser in an Api Controller?

I'm trying to detect the current web browser within one of my Api Controllers in my program using MVC4. Everywhere I look people say to use Request.Browser, however I can't get that to work. Any suggestions or is there something I'm overlooking?

like image 244
Smoore Avatar asked Jun 25 '13 19:06

Smoore


People also ask

How do I access Web API in my browser?

You can use any HTTP client to invoke your web API. In fact, you can invoke it directly from a web browser. In Visual Studio, start your application in debugging mode. Visual Studio will automatically open a web browser window with URL that points to http://localhost<portnumber>.

How does API controller work?

It handles incoming HTTP requests and send response back to the caller. Web API controller is a class which can be created under the Controllers folder or any other folder under your project's root folder. The name of a controller class must end with "Controller" and it must be derived from System.

What is the use of controller in Web API?

In Web API, a controller is an object that handles HTTP requests. We'll add a controller that can return either a list of products or a single product specified by ID. If you have used ASP.NET MVC, you are already familiar with controllers.


2 Answers

You can use the HttpBrowserCapabilities in System.Web like this

        var userAgent = HttpContext.Current.Request.UserAgent;
        var userBrowser = new HttpBrowserCapabilities { Capabilities = new Hashtable { { string.Empty, userAgent } } };
        var factory = new BrowserCapabilitiesFactory();
        factory.ConfigureBrowserCapabilities(new NameValueCollection(), userBrowser);

        //Set User browser Properties
        BrowserBrand = userBrowser.Browser;
        BrowserVersion = userBrowser.Version;

This relies on browscap.ini in Windows/System32/inetsrv/ or Windows/SysWOW64/inetsrv for definitions.

This article may also help - http://stephenwalther.com/archive/2010/03/05/use-asp-net-4-browser-definitions-with-asp-net-3-5

like image 57
ericdc Avatar answered Oct 10 '22 02:10

ericdc


You could do something like following too from within the Web API's action:

System.Net.Http.HttpRequestMessage currentRequest = this.Request;
System.Net.Http.Headers.HttpHeaderValueCollection<System.Net.Http.Headers.ProductInfoHeaderValue> userAgentHeader = currentRequest.Headers.UserAgent;
like image 39
Kiran Avatar answered Oct 10 '22 00:10

Kiran