Issues in WurflCloud
Posted: Wed Feb 15, 2012 8:30 am
Hi,
I am testing your WURFL Cloud service and i came accross some issues.
1. Previously I tested the .NET API but because the result devices were often of type "Generic" in comparison to TeraWurfl, where the result devices were specific (i assume that's correct), I tried the Wurfl Cloud service code for .NET. While there are considerably less "generic" hits, I still recivede some where TeraWurfl found a correct device. (e.g. "HTC_ChaCha_A810e/Mozilla/5.0(Linux; U; Android 2.3;xx-xx; Build/GRH78C) AppleWebkit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"). According to this discussion search algorithm in TeraWurfl and Wurfl Cloud ought to be the same so it shoud return the same device. How is this possible?
2. On .NET API I could find a device using only user_agent as input (IWURFLManager().GetDeviceForRequest(String userAgent)) and then retrieve all capabilites with IDevice.GetCapabilities(). At Wurfl Cloud the only way to find a device (by my knowledge) is by CloudClientManager.GetDeviceFromUserAgent(string userAgent, string[] capabilities);
In this case I need to know in advance what capabilities a device has. Is it possible to get device capabilities using only user_agent as input?
3. With the method CloudClientManager.GetDeviceFromUserAgent(string userAgent, string[] capabilities) I tried to get a device with appr. 500 capabilities (capabilities array length was appr. 500) but it produced an error everytime when the capabilities length was greater than appr. 205. I couldn't figure out why this error occured. Error occures in class CloudClient at code responce=webRequest.GetResponse();. The error is: "The underlying connection was closed: An unexpected error occurred on a receive.". Is there maybe al limit of characters in a web request? In order to get 500 capabilities for a device I had to run this request 3-times. Which brings me to the last quesstion/issue.
4. The webRequest runTime (no matter if I query for one of 200 capabilites) is around 400 ms. With .NET API the time to run the next code was less than 1 ms.
IDevice device = GetWURFLManager().GetDeviceForRequest(phoneSearchParameters.UserAgent);
IDictionary<string, string> iDictionary = device.GetCapabilities();
Why is there such a bottleneck?
Thank you for all your answers and keep up the good work with very useful database and tools.
I am testing your WURFL Cloud service and i came accross some issues.
1. Previously I tested the .NET API but because the result devices were often of type "Generic" in comparison to TeraWurfl, where the result devices were specific (i assume that's correct), I tried the Wurfl Cloud service code for .NET. While there are considerably less "generic" hits, I still recivede some where TeraWurfl found a correct device. (e.g. "HTC_ChaCha_A810e/Mozilla/5.0(Linux; U; Android 2.3;xx-xx; Build/GRH78C) AppleWebkit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"). According to this discussion search algorithm in TeraWurfl and Wurfl Cloud ought to be the same so it shoud return the same device. How is this possible?
2. On .NET API I could find a device using only user_agent as input (IWURFLManager().GetDeviceForRequest(String userAgent)) and then retrieve all capabilites with IDevice.GetCapabilities(). At Wurfl Cloud the only way to find a device (by my knowledge) is by CloudClientManager.GetDeviceFromUserAgent(string userAgent, string[] capabilities);
In this case I need to know in advance what capabilities a device has. Is it possible to get device capabilities using only user_agent as input?
3. With the method CloudClientManager.GetDeviceFromUserAgent(string userAgent, string[] capabilities) I tried to get a device with appr. 500 capabilities (capabilities array length was appr. 500) but it produced an error everytime when the capabilities length was greater than appr. 205. I couldn't figure out why this error occured. Error occures in class CloudClient at code responce=webRequest.GetResponse();. The error is: "The underlying connection was closed: An unexpected error occurred on a receive.". Is there maybe al limit of characters in a web request? In order to get 500 capabilities for a device I had to run this request 3-times. Which brings me to the last quesstion/issue.
4. The webRequest runTime (no matter if I query for one of 200 capabilites) is around 400 ms. With .NET API the time to run the next code was less than 1 ms.
IDevice device = GetWURFLManager().GetDeviceForRequest(phoneSearchParameters.UserAgent);
IDictionary<string, string> iDictionary = device.GetCapabilities();
Why is there such a bottleneck?
Thank you for all your answers and keep up the good work with very useful database and tools.