2012-11-26 15 views
6

Tôi đang phát triển một ứng dụng cho BB-10 bằng dịch vụ web. Trong này tôi muốn phân tích cú pháp JSON trong cả hai phương thức get và post và tôi muốn kiểm tra tính khả dụng của Internet.Blackberry 10 thác - Kiểm tra kết nối Internet

Tôi làm cách nào để thực hiện việc này?

Trả lời

5

Kiểm tra Availability Internet bằng cách sử dụng đoạn mã sau

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

    return (mNetList.count() > 0 && netMgr.isOnline()); 
} 
+1

tôi chạy này, Nhưng tôi nhận được "false" mà thôi. Có thư viện nào tôi phải thêm vào không. Và một điều nữa tôi không thể kết nối WIFI trong trình mô phỏng Blackeberry-10. Xin vui lòng cho tôi bất kỳ hướng dẫn về việc này. – alishaik786

+1

Tôi đang thử nghiệm mã này trên một trình mô phỏng nó cho tôi 'sai'. Vui lòng cho biết cách kiểm tra trình mô phỏng? – Mayank

+0

Điều này cực kỳ dài. Điều này có thể được thay thế bằng một dòng. Xem câu trả lời của tôi dưới đây. – lpapp

0

1.HPP FILE

class controller : public QObject 
{ 
Q_OBJECT 
public: 
controller(bb::cascades::Application *app); 


public Q_SLOTS: 
void sendRequest(const QString &countryID); 


private Q_SLOTS: 

void onFinished(); 

}; 

2.CPP FILE

void controller::sendRequest(const QString &countryID) 
{ 

QNetworkAccessManager* networkAccessManager = new QNetworkAccessManager(this); 

const QString queryUri = QString::fromLatin1("http://192.168.1.251:410/Mobile/Service1.svc/english/Category?CountryID=%1").arg(countryID); 

QNetworkRequest request(queryUri); 

QNetworkReply* reply = networkAccessManager->get(request); 

bool ok = connect(reply, SIGNAL(finished()), this, SLOT(onFinished())); 
Q_ASSERT(ok); 
Q_UNUSED(ok); 
} 


void controller::onFinished() 
{ 
QNetworkReply* reply = qobject_cast<QNetworkReply*>(sender()); 
QString response; 
if (reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() == 200) 
{ 
JsonDataAccess jda; 
QVariantMap map = jda.loadFromBuffer(reply->readAll()).toMap(); 

QVariantList addresses = map["GetCategoryResult"].toList(); 

foreach(QVariant var, addresses) { 
QVariantMap addressMap = var.toMap(); 

qDebug() << "CategoryName is " << addressMap["CategoryName"].toString(); 
qDebug() << "CategoryID is " << addressMap["CategoryID"].toString(); 
} 
} 
else { 
qDebug() << "Server returned code " << reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); 
} 
} 

SEE MÃ ĐẦY ĐỦ TẠI ĐÂY ---->http://supportforums.blackberry.com/t5/Native-Development/webservice-help-json/m-p/2569953/highlight/false#M46724

1

giáo viên của tôi đã tạo ra một thành phần QML cho thấy nếu có sự kết nối và loại kết nối nó là (wifi, bluetooth, hãng hàng không vv). Nó cũng gửi tín hiệu khi trạng thái kết nối hoặc giao diện được sử dụng đã thay đổi.

Mã này được lưu trữ tại github: https://github.com/rodrigopex/CheckInternetMicroSample

0

1) Bạn có thể kiểm tra internet có sẵn theo phương pháp sau đây theo documentation:

bool QNetworkConfigurationManager :: isOnline() const

Trả về true nếu hệ thống được coi là được kết nối với một thiết bị khác thông qua giao diện mạng đang hoạt động; nếu không trả về false.

2) Đối với các bit json, bạn có thể sử dụng phân tích cú pháp JSON trong Qt 5 như sau:

JSON Support in Qt

Nó đơn giản là đủ để gói Qt 5 againt ứng dụng của bạn, nhưng nó sẽ hy vọng có sẵn trên nền tảng này sớm.

Qt 5 on BlackBerry 10 - Beyond the Myth

Nếu không được, nó sẽ là rất đơn giản để backport những vài lớp học để Qt 4.