2012-03-13 5 views
1

Qtを学び、インターネットからXMLファイルをダウンロードしたい。 QUrlは、値value1とvalue2に依存します。例:Qtがウェブからの動的XMLを要求する

ここ

http://www.example.org/path/the_xml_file.xml?value1=1&value2=2

私はその後、私はこの方法でQUrlと位置することを要求QString destination_XML_URL

void AClass::setUrlString(quint32 t_value1, quint32 t_value2) { 
    destination_XML_URL = QString("http://www.anyweb.com/path/the_xml_file.xml?value1=%1&value2=%2").arg(t_value1).arg(t_value2); 
} 

を設定:

QNetworkAccessManager url_network_access_manager; 
//..; 
setTarget(12, 34); 
QUrl xml_Url(destination_XML_URL); 
QNetworkRequest request(xml_Url); 
QNetworkReply url_network_reply = url_network_access_manager.get(request); 

最後に接続接続する:

その後
connect(&url_network_access_manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(slot_disconnect2Net(QNetworkReply*))); 

ウェブからxmlファイルを取得した後スロット、:

void AClass::slot_disconnect2Net(QNetworkReply *data) { 
    qint64 t_size1 = data->size(); 
    int error_code = data->error(); 
    switch(error_code) { 
     case 0: 
      transform_Raw_2_XML(data); 
      break; 
     case 3: 
      break; 
     case 301: 
      break; 
     default: 
      QMessageBox::critical(this, "AClass::disconnect2Net()", QString("Connection error %1:\n %2").arg(error_code).arg(data->errorString()), QMessageBox::Ok); 
    } 
} 

しかし、私は、error_code 3取得:

http://doc.qt.io/qt-4.8/qnetworkreply.html#NetworkError-enum

「QNetworkReply :: HostNotFoundError = 3 :リモートホスト名が ではない(ホスト名が無効) "

アイデア?

答えて

2

接続がプロキシの背後にある可能性はありますか?

+0

はい、proxy:// QNetworkProxyプロキシがあります。 //proxy.setType(QNetworkProxy::HttpProxy); //proxy.setHostName("web.name.net "); //proxy.setPort(8080); //proxy.setUser("username "); //proxy.setPassword("******* "); // QNetworkProxy :: setApplicationProxy(プロキシ); //url_network_access_manager.setProxy(proxy);これで私はQNetworkReply :: ProxyAuthenticationRequiredErrorを取得します要求を守るためにプロキシが認証を要求しますが、提供された資格情報を受け付けませんでした。 –

+0

QNetworkReply :: errorString()は何を言いますか? – salomon

+0

本文には「プロキシに認証が必要です」と表示されています –

0

ネットワーク接続が利用できないようです。あなたのコードではエラーではありません。

0

この不可解なエラーメッセージが;-)

がプロキシDNSの問題のように見える、リモートホスト名が見つからなかったことを意味します(無効なホスト名)。ホスト名をIPアドレス(208.73.210.29?)に置き換えてみてください

+0

ブラウザでは、コンテンツを見ることができます。 –

+0

あなたの本当の(少なくとも最初の)問題はプロキシのようです。 Koying

+0

を参照してください。ただし、QUrl url = QUrl( "http://www.aai.dfn.de/fileadmin /metadata/DFN-AAI-Test-metadata.xml "、QUrl :: ParsingMode :: TolerantMode);上記のプロキシ設定で取得できます。上記の動的なthe_xml_file.xml?value1 = 1&value2 = 2を記述した別のQUrl、私はそのerrormessageを取得します。 –