标题:QNetworkAccessManager之前如何设置接入点和关联网络连接?
作者:pipzeng
日期:2010-11-04 21:50
内容:
环境:winxp, QT Creator 2.0/Nokia Qt SDK 1.0 (针对S60 V5手机开发)
程序中采用QNetworkAccessManager处理请求,代码段如下:
...
manager = new QNetworkAccessManager(this); //新建QNetworkAccessManager对象
manager->setProxy(QNetworkProxy::NoProxy);
connect(manager,SIGNAL(finished(QNetworkReply*)),this,SLOT(replyFinished(QNetworkReply*)));
ui->lbl_msg->setText(codec->toUnicode("登录中,请稍候..."));
manager->get(QNetworkRequest(QUrl(url+"/LoginHandler.aspx?Action=login&LoginName="+loginname+"&Pwd="+pwd+""))); //发送请求
现象描述:
1)代码在模拟器上运行正常。
2)连接到真机(nokia 5235)上调试时,如果真机上设置了默认连接(在承载方式下设置,默认链接为为互联网(联通3gnet)),程序在执行manager->get...时,会导致真机自动重启。
2)若将真机上的默认连接方式设置为(询问一次),则在真机上调试是正常的,但每次网络连接之前都会出现接入点选择框,我选择互联网接入点,运行是正常的。
如何在程序中实现每次需要网络连接时自动寻找接入点(3gnet/3gwap),无需用户选择。在网上学习了一下关于接入点选择和屏蔽方面的资料。
在QNetworkAccessManager之前设置接入点和Connection.Start,代码如下:
...
User::LeaveIfError(iSocketServ.Connect());
User::LeaveIfError(iConnection.Open(iSocketServ));
TCommDbConnPref connectPref;
connectPref.SetDialogPreference(ECommDbDialogPrefDoNotPrompt);
connectPref.SetBearerSet(ECommDbBearerUnknown);
connectPref.SetDirection( ECommDbConnectionDirectionOutgoing );
connectPref.SetIapId(iSelectedIap);
User::LeaveIfError(iConnection.Start(connectPref));
RHTTPConnectionInfo connInfo = iSession.ConnectionInfo();
RStringPool pool = iSession.StringPool();
// Attach to socket server
connInfo.SetPropertyL(pool.StringF(HTTP::EHttpSocketServ,
RHTTPSession::GetTable()), THTTPHdrVal(iSocketS ..
#1 [XChinux 11-04 22:21]
关注楼主。。。还没搞过这块儿,同问。
#2 [hqd_2008 11-05 10:13]
在研究这个,同学并顶起该贴。
#3 [pipzeng 11-05 11:37]
mobility的QNetworkSession和QNetworkConfigurationManager有高人用过吗?麻烦出来指点下!
我换了一种方式在试,还没解决,好像session 和QNetworkAccessManager还是没有关联上....
QNetworkSession* session;
QNetworkConfigurationManager cfgmanager;
const bool selectIap = (cfgmanager.capabilities()& QNetworkConfigurationManager::CanStartAndStopInterfaces);
QNetworkConfiguration defaultIap = cfgmanager.defaultConfiguration();
if(!defaultIap.isValid() && (!selectIap && defaultIap.state() != QNetworkConfiguration::Active))
{
QMessageBox::information(this, QString::fromLocal8Bit("提示信息"), QString::fromLocal8Bit("请设置有效的网络连接!"));
}
session = new QNetworkSession(defaultIap,this);
session->open();
manager = new QNetworkAccessManager(this);//新建QNetworkAccessManager对象
manager->setProxy(QNetworkProxy::NoProxy);
还没入门Symbian的开发,感觉做Symbian的程序员真惨,可查的资料不多,还是做微软的程序员幸福,可查的资料多,呵呵
#4 [XChinux 11-05 13:06]
你的session是指网页中的session吗?这样的话,关键在于保存COOKIE吧。
#5 Re:QNetworkAccessManager之前如何设置接入点和关联网络连接?(占下光) [hqd_2008 11-05 16:01]
各位大侠,
咨询下,我想QListWidget的滚动条会随着QListWidget Item的增加一直处于最底端,
之前有个帖子是讲QLineEdit的问题,我使用下面的方法
ListWidgetContent->verticalScrollBar()->setValue(ListWidgetContent->count());
发现滚动条总是会和底端差那么一点点,
请问需要做什么设置呢?