Introduction
This article will show you basic user agent / mobile capabilities (mobile model, vendors etc.,) profiling using simple VBScript.
Background
I created a WAP application for getting information about mobile hand set models and their vendors and store it in a simple text file. At first, I decided to create an application using Java, but the problem is that people need to download and install the application; finally, I decided to create a simple WML encoding ASP page.
Using the code
We will now discuss about the ways you can store the handset models and their vendors. At first, I would like to show you the basic UAProfile attribute fetching routine where I use Msxml2.dll, and it has no internal dependencies. The sample code is given below:
Function GetValue(ByVal url, ByVal name)
//###############################################
// Author: Md. Marufuzzaman
// Basic UapProfile attribute fetching routine
// Internal Dependencies: None
// !!! Mother of all UAP Routines
// ###############################################
On Error Resume Next
Dim http
Dim document
Dim namespaces
Dim node
Dim xpath
Set http = Server.CreateObject("Msxml2.XMLHTTP")
http.Open "GET", url, False
http.Send
If http.Status <> "200" Then
GetValue = Nothing
Exit Function
End If
Set document = Server.CreateObject("Msxml2.DOMDocument")
document.async = False
document.validateOnParse = False
document.resolveExternals = False
document.load http.responseBody
If document.parseError.errorCode <> 0 Then
GetValue = Nothing
Exit Function
End If
document.setProperty "SelectionLanguage","XPath"
xpath = "//*[local-name() = '" & name & "']"
Set node = document.selectSingleNode(xpath)
If Not node Is Nothing Then
GetValue = node.Text
Else
GetValue = Nothing
End If
Set document = Nothing
Set http = Nothing
End Function
Function GetWidth()
//##################################################
// Author: Md. Marufuzzaman
// Gets the Screen Height of the Mobile screen
// !!! Local Function Defendencies:
// GetValue()
// Revision:
//##################################################
profile=replace(Request.ServerVariables("HTTP_PROFILE"),chr(34),"")
xwapprofile=replace(Request.ServerVariables("HTTP_X_WAP_PROFILE"), _
chr(34),"")
profileurl= profile
if profile= "" then
vProf = split(xwapprofile,",")
profileurl= vProf(0)
end if
//-----------------------------------------------------------
retval = GetValue(profileurl,"ScreenSize")
if retval <> "" then
screenpara = split(retval,"x") //ok
GetWidth= screenpara(lbound(screenpara)) //OK
else
GetWidth= 144 //<------- the default width
end if
//-----------------------------------------------------------
End Function
Function GetHeight()
//##################################################
// Author: Md. Marufuzzaman
// Gets the Screen Height of the Mobile screen //
// !!! Local Function Defendencies: //
// GetValue() //
// Revision: //
//###########################################
profile=replace(Request.ServerVariables("HTTP_PROFILE"),chr(34),"")
xwapprofile=replace(Request.ServerVariables("HTTP_X_WAP_PROFILE"), _
chr(34),"")
profileurl= profile
if profile= "" then
vProf = split(xwapprofile,",")
profileurl= vProf(0)
end if
//-----------------------
retval = GetValue(profileurl,"ScreenSize")
if retval <> "" then
screenpara = split(retval,"x") //ok
GetHeight=screenpara(ubound(screenpara))
else
GetHeight= 176 //<---- the default height
end if
//--------------
End Function
Function Is_PDA()
//###############################################
// Author: Md. Marufuzzaman
// Detect Windows CE/OS PDA
// // ###############################################
Dim varUAProfile
Dim varArray
Dim variCounter
varUAProfile = Request.ServerVariables("HTTP_USER_AGENT")
varUAProfile = varUAProfile & " #"
varArray = split(varUAProfile, " " )
variCounter = 0
while varArray(variCounter) <> "#"
if ucase(varArray(variCounter)) = "WINDOWS" OR _
ucase(varArray(variCounter+1)) = "CE" then
Is_PDA = True
Exit Function
else
Is_PDA = False
end if
variCounter = variCounter + 1
wend
End Function
Function HandSetMode ()
//###########################################
// Author: Md. Marufuzzaman
// Revision:
//##########################################
Dim fs,fname
Dim varVendor,varHandSetModel,varData
Dim varProf,varWapProfile
Dim varProfile
varProfile=replace(Request.ServerVariables("HTTP_PROFILE"),chr(34),"")
varWapProfile=replace(Request.ServerVariables("HTTP_X_WAP_PROFILE"),chr(34),"")
profileurl = varProfile
if varProfile= "" then
varProf = split(varWapProfile,",")
profileurl=varProf(0)
end if
varVendor= ucase(GetValue(profileurl,"Vendor"))
varHandSetModel= ucase(GetValue(profileurl,"Model"))
varData = "Vendor:-" & varVendor & ", HandSet_Model # " & _
varHandSetModel & ", UAProf:" & profileurl & _
", TimeStamp # " & Now()
set fs=Server.CreateObject("Scripting.FileSystemObject")
set fname=fs.OpenTextFile(Server.MapPath("HandSetList.txt"),8,true)
// 8 = ForAppending
fname.WriteLine(varData)
fname.Close
set fname=nothing
set fs=nothing
End Function
Sample code of ASP page with WML encoding:
// Include the header file UAProfiling.in (VBScript files)
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
"http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<card id="profileview" title="Mobile Capabilities">
<p align="center">
<%
%>
</p>
</card>
</wml>
In thr above function GetValue(), I create two objects:
Msxml2.XMLHTTP, used for the HTTP GET.
Msxml2.DOMDocument, used for the XML parsing.
Conclusion
I hope that it might be helpful to you. Enjoy!
He is the founder & CEO of MNH Technologies and working for urban and rural sectors to improve people’s lifestyle, better medical facilities, education, social business etc. He has over ten years of professional experiences in design and developing Client-Server, Multi-Tier, Database, Web based business software solutions, Enterprise Applications, API, WebAPI, Google Analytics implementation, Add-In, Documentation & Technical Writing etc for Windows / Mac using Microsoft SQL Server, Oracle, MySql, PS, C#, VB.NET, ASP.NET, PHP, RoR, Visual Basic etc. He has also more than two years experience in Mobile-VAS (Platform Development).
He worked for various software development & technology consulting. His core focus on technologies to create dynamic data-driven systems that add value to your business and dynamic technology consulting that builds advanced solutions for the industries across the various vertices.
He also work as a Solution Architect at Dhrupadi Techno Consortium Limited (DTCL) and responsible for analyzing business requirements and offered optimum solutions (multiple options), which would address all current requirements, provide flexibility for future growth and allow smooth transition between old system and new system.
He graduated with honors from The University of Asia Pacific, in Computer Science and Engineering. He was awarded as “Most Valuable Professional” (MVP) at 2010 and 2011 by CodeProject.com and also selected as a Mentor of CodeProject.com
Specialties: Software Development Management, System Integration, Data Warehouse Architecture, Virtualization.