2013-09-03 3 views
0

1. Как использовать веб-службу json в каскадах ежевики.Как использовать json webservice в ежевичных каскадах

2.i необходимо получить данные с URL-адреса на страницу qml. если возможно, предложите предложение с некоторым образцом.

3.my ссылку веб-сервис содержит тип массива

для например: { "адрес": [ "область": "ЧН", "город": "GHT"]}

4 .description: JSON ссылка ->192.168.1.251:410/Mobile/Service1.svc/english/Category?CountryID=1

5.by, используя указанную выше ссылку, пожалуйста, как retrive данные JSon WebService в каскады .. Мне нужен ответ в каскадных методах.

+0

пожалуйста, кто-нибудь скажет, как получить данные – svmrajesh

ответ

3

справа. Ну, это действительно вопрос из двух частей. Во-первых, как сделать запрос и получить ответ, а во-вторых, как разбирать JSON; к счастью, Каскады вы освещали в обоих случаях.

Чтобы сделать запрос:

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.

+0

Спасибо, много чувак. Я ищу этот синтаксис в течение 3 дней, чтобы попасть в службу для этого типа. Наконец ты спас меня. – svmrajesh

+0

Спасибо за ваш ответ. вы расскажете, как отображать полученные данные в виде списка. данные получают как массив, поэтому он слегка запутывается. – svmrajesh

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(); 
+0

спасибо за ответ, но я ожидаю, что какой-то образец будет понятен ясно – svmrajesh

+0

Ваше решение подходит для некаскадного приложения. При использовании Cascades у вас уже есть '' JsonDataAccess'', QJSON не нужно. –

Смежные вопросы