我正在尝试使用 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();
}
这当前输出“[]”。如果我使用一个简单的网址,例如
它工作得很好。
那么我错过了什么?
是不是因为我的浏览器的get请求和我的QT get请求有区别?
我是否必须配置我的 HTTP 获取请求的标头?如果是这样,价值是什么
?
先感谢您