BB 10 Cascades Internet Check

时间:2013-12-28 07:07:14

标签: c++ qt qml blackberry-10 blackberry-cascades

如果收到套接字错误,我需要检查Internet连接。我正在这样做,

void Client::socketError(QAbstractSocket::SocketError socketError) {
   HttpPost("https://www.google.co.in/");
}

void Client::HttpPost(QString URL ) {

    QNetworkRequest request = QNetworkRequest();
    request.setUrl(QUrl(URL));

    QNetworkAccessManager *mNetworkAccessManager = new QNetworkAccessManager(this);
    bool result = connect(mNetworkAccessManager, SIGNAL(finished(QNetworkReply*)),
                          this, SLOT(HttpResponse(QNetworkReply *)));

    mNetworkAccessManager->get(request);
    qDebug() << "::: Client.cpp  Request made to Service :::";
}

void Client::HttpResponse(QNetworkReply* reply) {

    if (reply->error() == QNetworkReply::NoError) {
        qDebug() << "\n  Internet Ok **********";
    } else {
        qDebug() << "\n No Internet **********" << reply->errorString();
        showDialog("No Inernet");
    }
}

我正在连接信号和插槽,如

connect(socket, SIGNAL(error(QAbstractSocket::SocketError)),
        this, SLOT(socketError(QAbstractSocket::SocketError)));

但有时候即使Wi-Fi可用,我也会收到“No Internet Dialog”。为什么?


方法2:

// this method will return true If Net is available false other wise
// but even this is return false some times even Wi fi signal is Available 

bool Client::isNetworkAvailable() {
    bool isFound = false;
    QNetworkConfigurationManager netMgr;
    QList<QNetworkConfiguration> mNetList = netMgr.allConfigurations(QNetworkConfiguration::Active);

    if (mNetList.count() > 0) {
            if (netMgr.isOnline()) {
                isFound = true;
            }
    }
    qDebug() << "\n ************** isNetworkAvailable:::" << isFound;
    return isFound;
}

我的代码有问题吗?

2 个答案:

答案 0 :(得分:0)

您的网络检查代码段似乎有点过于复杂。您只需调用以下方法:

  

bool QNetworkConfigurationManager::isOnline () const

     

如果系统被认为通过活动网络接口连接到另一个设备,则返回true;否则返回false。

如果这对某人不起作用,很可能意味着互联网连接不可靠,特别是如果它不能随机工作。

答案 1 :(得分:0)

怎么样?
NetworkAccessibility QNetworkAccessManager::networkAccessible ()
  

networkAccessible:NetworkAccessibility

     

此属性保存网络当前是否可通过   这个网络访问管理器。

     

如果网络不可访问,网络访问管理器则不会   处理任何新的网络请求,所有这些请求都将失败   错误。带有file:// scheme的URL的请求仍然是   处理。