SourceForge からファイルをダウンロードする必要がある Qt フレームワークを使用して C++ アプリケーションを作成しています。
このファイルをダウンロードする必要がありますhttps://sourceforge.net/projects/meshlab/files/updates/1.3.3/updates.xml
Qt と QHttp クラスを使用して次のコードを記述しました。
QFile tmpfile;
int hostreqid;
int checkreqid;
...
...
tmpfile.setFileName("updates.xml");
hostreqid = http.setHost("sourceforge.net",QHttp::ConnectionModeHttp);
checkreqid = http.get(QString(QUrl::toPercentEncoding("/projects/meshlab/files/updates/1.3.3/updates.xml")),&tmpfile);
...
...
void parseAnswer( int id,bool error )
{
if (!error && (id == checkreqid))
{
...
tmpfile.close();
}
if (error)
{
QHttp::Error err = http.error();
QString errstrg = http.errorString();
}
}
QHttp::setHost と QHttp::get は両方とも、すぐに int id を返す関数をブロックしていません。http ファイル転送が完了すると、parseAnswer 関数が自動的に呼び出されます。問題は、取得した updates.xml ファイル内で、予期していたデータではなく、SouceForge から「無効なプロジェクト」エラーを報告する html ファイルを受信したことです。
ブラウザからhttps://sourceforge.net/projects/meshlab/files/updates/1.3.3/updates.xmlにアクセスすると、 https://sourceforge.net/projects/meshlab/filesにリダイレクトされていることに気付きました/updates/1.3.3/updates.xml/ダウンロードページ。この他のアドレスも試しましたが、何も変わりませんでした。
https の代わりに Http プロトコル (QHttp::ConnectionModeHttp) を使用していることに注意してください。できれば、https の使用は避けたいと思います。問題の原因になる可能性はありますか?
どうもありがとう!