Я пытаюсь запустить мультизапрос с использованием фреймворка QT.
Мой запрос выглядит так
{"query1":"SELECT uid2 FROM friend WHERE uid1=me()","query2":"SELECT uid, name FROM user WHERE uid in(SELECT uid2 FROM #query1)"}
До сих пор я обнаружил, что если не использовать метод "# query1", он будет работать. Но мне это нужно в моем приложении, поскольку мой фактический запрос более сложный.
Если я вставлю
https://api.facebook.com/method/fql.multiquery?format=json&queries=%7B%22query1%22%3A%22SELECT%20uid2%20FROM%20friend%20WHERE%20uid1%3Dme%28%29%22%2C%22query2%22%3A%22SELECT%20uid%2C%20name%20FROM%20user%20WHERE%20uid%20in%28SELECT%20uid2%20FROM%20%23query1%29%22%7D&access_token=xxxxxxxxxxxxx
в адресной строке браузера, где access_token является действительным, я получаю ответ.
Когда я делаю тот же запрос от QT, я получаю пустой список json ("[]")
Вот код QT:
//this is just a markup, the read deal works
QNetworkAccessManager *manager = new QNetworkAccessManager(this);
QNetworkRequest request;
url="https://api.facebook.com/method/fql.multiquery?format=json&queries=%7B%22query1%22%3A%22SELECT%20uid2%20FROM%20friend%20WHERE%20uid1%3Dme%28%29%22%2C%22query2%22%3A%22SELECT%20uid%2C%20name%20FROM%20user%20WHERE%20uid%20in%28SELECT%20uid2%20FROM%20%23query1%29%22%7D&access_token=xxxxxxxxxxxxx";
request.setRawHeader("Content-Type","application/x-www-form-urlencoded");
request.setUrl(url);
reply=manager->get(request);
connect(manager, SIGNAL(finished(QNetworkReply*)),
this, SLOT(replyFinished(QNetworkReply*)));
void replyFinished(QNetworkReply *r){
qDebug()<<r->readAll();
}
В настоящее время выводится «[]».
Если я использую простой URL-адрес, такой как
http://graph.facebook.com/me/friends?access_token=xxxxxxxxx
работает просто отлично.
Так чего мне не хватает?
Это потому, что есть разница между запросом get моего браузера
и мой QT получить запрос?
Нужно ли настраивать заголовок моего HTTP-запроса на получение? И что
значения если так?
Заранее спасибо