Click here to Skip to main content
Click here to Skip to main content

How to get mobile information using VBScript

By , 28 May 2009
 

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(): used for HTTP POST/Get and XML parsing 

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(): Get mobile screen width

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(): Get mobile screen height

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(): Return true if the request from Windows PDA browser.

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(): Get the device model and the vendors 
'                        and store into a text file.

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">

<%

' Call the VBScript function

%>

</p>
</card>
</wml>

In thr above function GetValue(), I create two objects:

  1. Msxml2.XMLHTTP, used for the HTTP GET.
  2. Msxml2.DOMDocument, used for the XML parsing.

Conclusion

I hope that it might be helpful to you. Enjoy!

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author

Md. Marufuzzaman
CEO
Bangladesh Bangladesh
Member
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.

Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
You must Sign In to use this message board.
Search this forum  
    Spacing  Noise  Layout  Per page   
GeneralMy vote of 5memberAbdul Quader Mamun14 Aug '12 - 15:27 
excellent 5!
GeneralMy vote of 5memberMd. Salah Uddin Salim19 Dec '11 - 1:09 
thanks
GeneralRe: My vote of 5memberAbdul Quader Mamun14 Aug '12 - 15:27 
Please read my newly posted article and Plz comments or vote.
A Framework for Software Application[^]

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Permalink | Advertise | Privacy | Mobile
Web03 | 2.6.130523.1 | Last Updated 28 May 2009
Article Copyright 2009 by Md. Marufuzzaman
Everything else Copyright © CodeProject, 1999-2013
Terms of Use
Layout: fixed | fluid