windows mobile 上c++访问 网络(http,websevicer)问题 vc2005 访问webservice 经验
像其他人写的文章一样,添加一个Web引用,关键的是访问时对gprs接入点进行管理,否则只能在模拟器上可以。或者真机上通过usb访问可以。
cmwap和cmnet管理
用ConnMgrQueryDetailedStatus得点进行管理到连接列表。对想要的接入点调用ConnMgrEstablishConnectionSync进行连接
我是对cmnet,cmwap,usb,wifi进行管理了
// usb
BOOL xxx::IsUsbConn(CONNMGR_CONNECTION_DETAILED_STATUS status)
{
BOOL bret = ((status.dwType == CM_CONNTYPE_PC) && (status.dwSubtype == CM_CONNSUBTYPE_PC_DESKTOPPASSTHROUGH));
if(bret)
{
m_conntype = CT_USB;
}
return bret;
}
// check the connection is WIFI connection
BOOL xxx::IsWifiConn(CONNMGR_CONNECTION_DETAILED_STATUS status)
{
BOOL bret = ((status.dwType == CM_CONNTYPE_NIC) && (status.dwSubtype == CM_CONNSUBTYPE_NIC_WIFI));
if(bret)
{
m_conntype = CT_WIFI;
}
return bret;
}
// check the connection is cmnet connection
BOOL xxx::IsCMNETConn(CONNMGR_CONNECTION_DETAILED_STATUS status)
{
if((status.dwType == CM_CONNTYPE_CELLULAR)
&& ((status.dwSubtype == CM_CONNSUBTYPE_CELLULAR_EDGE)
||(status.dwSubtype == CM_CONNSUBTYPE_CELLULAR_UMTS)
||(status.dwSubtype == CM_CONNSUBTYPE_CELLULAR_GPRS)))
{
TCHAR szAPN[200] = {0};
if(S_OK == GetAPNFromEntryName(status.szDescription, szAPN, 200))
{
for(size_t k = 0; k < wcslen(szAPN);k++)
szAPN[k] = _tolower(szAPN[k]);
if(wcscmp(szAPN,CMNET_NAME)==0)
{
m_conntype = CT_CMNET;
return TRUE;
}
}
}
return FALSE;
}
// check the connection is cmwap connection
BOOL xxx::IsCMWAPConn(CONNMGR_CONNECTION_DETAILED_STATUS status)
{
if((status.dwType == CM_CONNTYPE_CELLULAR)
&& ((status.dwSubtype == CM_CONNSUBTYPE_CELLULAR_EDGE)
||(status.dwSubtype == CM_CONNSUBTYPE_CELLULAR_UMTS)
||(status.dwSubtype == CM_CONNSUBTYPE_CELLULAR_GPRS)))
{
TCHAR szAPN[200] = {0};
if(S_OK == GetAPNFromEntryName(status.szDescription, szAPN, 200))
{
for(size_t k = 0; k < wcslen(szAPN);k++)
szAPN[k] = _tolower(szAPN[k]);
if(wcscmp(szAPN,CMMAP_NAME) ==0)
{
m_conntype = CT_CMWAP;
return TRUE;
}
}
}
return FALSE;
}
......................
cmwap设置代理(webservice对象,就可以设置)。
下面就可以调用webservice的方法了。。。。。。。。。。
呵呵。c++就是比c#麻烦一点。但是他可以灵活的控制接入点):
转载请注明连接。谢谢