J2ME本身的API是没有提供这个方法的,但是我们通过CMWAP连接的时候,通过移动的网关来获取,当然,前提是移动的网关要提供这个功能。
如果网关支持这个功能的话,我们就可以通过服务器端来获得手机号码了,以下代码可以做为测试,看看你连接的移动网关是不是支持:
public static string GetPhoneNumber(HttpRequest request)
{
string phone = "" ;
NameValueCollection coll = null ;
try
{
coll = request.ServerVariables ;
}
catch {}
try
{
if (phone == "")
{
phone = coll["HTTP_X_UP_CALLING_LINE_ID"].ToString() ;
}
}
catch {}
try
{
if (phone == "")
{
phone = coll["MISC_MSISDN"].ToString() ;
}
}
catch {}
try
{
if (phone == "")
{
phone = coll["x-up-calling-line-id"].ToString() ;
}
}
catch {}
try
{
if (phone == "")
{
phone = coll["HTTP_X_NOKIA_MSISDN"].ToString() ;
}
}
catch {}
try
{
if (phone.Length > 11)
{
phone = phone.Substring(2) ;
}
}
catch(Exception ex)
{
phone = ex.Message ;
}
return phone ;