1.如何在黑莓级联中使用json web服务。
2.i需要将数据从url链接到qml页面。如果可能的话,给出一些样本。
3.my web服务链接包含数组类型
例如: {“address”:[“area”:“chn”,“city”:“ght”]}
4.产品说明: json链接 - >的 192.168.1.251:410/Mobile/Service1.svc/english/Category?CountryID=1
5.使用上面的链接请告诉我如何从级联中的json webservice中检索数据..我需要在级联方法中回答..
答案 0 :(得分:3)
右。那么这真的是一个两部分的问题。首先是如何发出请求并收到回复,其次是如何解析JSON;幸运的是,Cascades为您提供了两种情况的保障。
提出要求:
QNetworkAccessManager qNam;
QNetworkRequest req("192.168.1.251:410/Mobile/Service1.svc/english/Category?CountryID=1");
QNetworkReply *reply = qNam.get(req);
connect(reply, SIGNAL(finished()), this, SLOT(onFinished()));
然后将onFinished插槽定义为:
void ClassName::onFinished() {
QNetworkReply *reply = dynamic_cast<QNetworkReply*>(sender());
if (reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() == 200) {
JsonDataAccess jda;
QVariantMap map = jda.loadFromBuffer(reply->readAll()).toMap();
QVariantList addresses = map["address"].toList();
foreach(QVariant var, addresses) {
QVariantMap addressMap = var.toMap();
qDebug() << "Area is " << addressMap["area"].toString();
qDebug() << "City is " << addressMap["city"].toString();
}
}
else {
qDebug() << "Server returned code " << reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()
}
}
为此,此方法必须在类中标记为Q_SLOT
。
答案 1 :(得分:1)
尝试这种语法..如果需要更多从此处获取http://qjson.sourceforge.net/usage/
QJson::Parser parser;
bool ok;
QVariantMap result = parser.parse (json, &ok).toMap();
if (!ok) {
qFatal("An error occurred during parsing");
exit (1);
}
qDebug() << "encoding:" << result["encoding"].toString();
qDebug() << "plugins:";
foreach (QVariant plugin, result["plug-ins"].toList()) {
qDebug() << "\t-" << plugin.toString();
}
QVariantMap nestedMap = result["indent"].toMap();
qDebug() << "length:" << nestedMap["length"].toInt();
qDebug() << "use_space:" << nestedMap["use_space"].toBool();