-1

QNetworkAccessManager を使用してニュース ポータルからニュースを読んでいます。以下は例です。

QNetworkReply *reply;
QNetworkAccessManager *network = new QNetworkAccessManager;
network->setNetworkAccessible(QNetworkAccessManager::Accessible);
reply = network->get(QNetworkRequest(QUrl(“http://news.yahoo.com/rss/sports”))); 

テストする別の URL「<a href="http://news.yahoo.com/rss/baseball" rel="nofollow">http://news.yahoo.com/rss/baseball」</p>

一部の URL は適切な xml コンテンツを取得しますが、適切なコンテンツを受信しない URL はほとんどありません。

ニュースリーダーにqtの例を使用しようとしているときに直面している同様の問題。QtSDK/デモ/4.7/宣言型/rssnews

取得された無効な XML の例は次のようになります: (適切な XML にはタイトル、説明タグが必要です)

<?xml version=“1.0” encoding=“UTF-8” ?><!DOCTYPE html PUBLIC “-//WAPFORUM//DTD XHTML Mobile 1.0//EN” “http://www.wapforum.org/DTD/xhtml-mobile10.dtd”&gt;<html lang=“en” xml:lang=“en”&gt;<head><title>Sports News Headlines – Yahoo! News</title><meta http-equiv=“Content-Type” content=“text/html; charset=utf-8”/><style type=“text/css”&gt;body{color:#353535;background:#ffffff;font-family:Sans-serif}a{color:#006ec2;text-decoration:none}a.z, a.y, a.x, a.w, a.v, .u a{text-decoration:none}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6{padding:0;margin:0}img{border:0}hr{display:none;visibility:hidden;width:0}#page{background:
………………………..
…………………………………
…………………………………………….
cir0Pb17r9HJLHyL2H6qC_rG”&gt;<span>Help</span></a></div><div class=“o p “&gt;© 2013 Yahoo! Inc. All rights reserved</div></div></div></div></div>http://us.bc.yahoo.com/b?P=92jfVTc2LjFqpOI6f__DZQGKMTI1LlFSw2X_m5fY&T=1ehh1jvjf/X=1364378469/E=954001251/R=mi/K=5/V=10.1/W=C/Y=YAHOO/F=1168823538/H=YmVzdC13b2VpZD0iMjI5NTQyMCIgY2Fycmllcj0iSU4tVU5LTk9XTiIgY29udGVudD0ibW9iaWxlX25ld3MiIGR2Y19jbHM9IjQiIHBuPSJ5YWhvb19tb2JpbGVfdXNfd2ViIiBycz0icHJpOnlhaG9vX21vYmlsZV91c193ZWI7c2VjOnlhaG9vO2NycjpJTi1VTktOT1dOOyIgc2VydmVJZD0iOTJqZlZUYzJMakZxcE9JNmZfX0RaUUdLTVRJMUxsRlN3MlhfbTVmWSIgc2l0ZUlkPSI0OTAyNTUxIiB0U3RtcD0iMTM2NDM3ODQ2OTk3MTg3MCIg/Q=-1/I=1/S=1/J=36F70D4C&U=12cle5obm/N=TWHUE2KJiVo-/C=-1/D=WFB2/B=-1/V=0 <!— SpaceID:954001251 —&gt;</body></html> 
<!— webgw51.mobile.sp1.yahoo.com uncompressed/chunked Wed Mar 27 10:01:09 GMT 2013 —&gt;
<!— fe621.global.media.sg3.yahoo.com uncompressed/chunked Wed Mar 27 10:01:09 UTC 2013 —&gt;
4

1 に答える 1

1

この問題は、QNetworkAccessManager がデフォルトでヘッダーUser-Agentを に設定するために発生Mozilla/5.0します (Qt 4.8.4 および Qt 5.1.1 でテスト済み)。これにより、yahoo サーバーは、ブラウザー (この場合は firefox とその友人) で表示するための HTML 形式のバージョンを返します。

RSS を強制するには、User-Agentヘッダーをブラウザーとして認識されないものに設定します。

...
QNetworkRequest request(QUrl("http://news.yahoo.com/rss/sports"));
request.setRawHeader("User-Agent", "MyFancyApplication");
QNetworkReply *reply = network->get(request);
...
于 2013-10-23T20:07:05.900 に答える