Прежде всего, я хотел бы сказать, что я совершенно новичок в BB и я работаю на Android.
Я смотрю на образцы, такие как:
https://developer.blackberry.com/cascades/documentation/device_comm/networking/
У меня есть приложение, которое делает много разных (и похожих) веб-запросов. Как мне определить эти входящие ответы, чтобы я мог преобразовать их в соответствующие компоненты? Могу ли я пометить их как-нибудь?
Спасибо и, пожалуйста, дайте мне знать, если я могу быть более ясным.
Как писал @Kernald выше, всю информацию, которую вы, вероятно, запрашиваете, можно найти в QNetworkReply
объект. Вы получите указатель на этот объект после размещения запроса, позвонив QNetworkAccessManager::get()
или же QNetworkAccessManager::put()
Когда вы получаете ответ, он доставляется через QNetworkAccessManager::finished(QNetworkReply *reply)
сигнал
Здесь вы можете получить доступ к аналогам через указатель на соответствующий QNetworkRequest
и это содержимое в зависимости от того, что вы после
QNetworkAccessManager* networkAccessManager;
// skipped
bool result = connect(networkAccessManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(requestFinished(QNetworkReply*)));
Q_ASSERT(result);
// skipped
void requestFinished(QNetworkReply* reply) {
QNetworkRequest* request = reply->request();
QUrl url = request->url(); // get the URL
QVariant header = request->header(); // get the header
// etc...
}
Кроме того, вы можете получить необработанные заголовки сетевого ответа, например:
QByteArray hdr;
QList<QByteArray> list = reply->rawHeaderList();
Q_FOREACH(hdr, list){
qDebug() << hdr;
}
Если по какой-то причине этого недостаточно, вы можете вручную пометить сетевой запрос, назначив QNetworkRequest::Attribute
в QNetworkRequest
объект:
QNetworkRequest request; // Create and send the network request
QNetworkRequest::Attribute attr = QNetworkRequest::User+1; // any unique value greater than QNetworkRequest::User
QString myStuff;
request.setAttribute(attr, myStuff);
Эти значения атрибута должны быть больше, чем QNetworkRequest::User
вплоть до QNetworkRequest::UserMax
, После этого вы получите атрибут, ранее назначенный запросу, следующим образом:
void requestFinished(QNetworkReply* reply) {
QNetworkRequest* request = reply->request();
QNetworkRequest::Attribute myAttr = QNetworkRequest::User+1;
QVariant myStuff = reply->request().attribute(myAttr);
// do something further
}
Вот официальная документация BB10 и Qt (для версии 4.8, которая в настоящее время используется в последней версии Blackberry 10 SDK):
У вас есть как минимум два способа сделать это:
QNetworkReply
, вы можете получить доступ к вашему первоначальному запросу (https://developer.blackberry.com/cascades/reference/qnetworkreply.html#request), на котором вы можете установить originatingObject
: https://developer.blackberry.com/cascades/reference/qnetworkrequest.html#setOriginatingObject, и любой другой атрибут по вашему запросу