これはthisのフォローアップです。最初は、example from the Qt wikiをチェックアウトした後で問題が解決したと思っていました(私は同じコードを一回変更せずに使用します)。しかし、それは原因であるURLだと思われます。 thisで提供されているリンクを使用して、http GETリクエストをテストしました。 Qtは立ち往生してreadyRead()
/finished()
信号が放出されることはありませんいくつかの理由についてQNetworkAccessManagerとQNetworkReplyを使用してhttp GET要求を正しく行うにはどうすればよいですか? URLはQtのリクエストにどのように影響しますか?
$~: curl --request GET --url "http://httpbin.org/ip"
ます:httpリクエスタ(FirefoxのHTTP要求のアドオン()などのPOSTをGET)とcurl
を使用すると、このリンク^とは問題を示しません。
結果として、ソケットタイムアウトのために要求が取り消されてしまいます。実際には小さく、Firefoxによって1秒未満で開かれたものについては、
私はHttpのものについては専門家から遠いです。他のツールを使って作業しているときに、Qtでこの現象が発生する理由を知りたいと思います。
編集:私はまた、Pythonとそのurllib
import urllib.request
res = urllib.request.urlopen("http://httpbin.org/ip").read().decode("utf-8")
import xml.etree.ElementTree as ET
doc = ET.fromstring(res)
を使用して問題のあるURLをテストしてみたし、それだけで正常に動作し。明らかに、Qtの使用中に何かがあります。
EDIT2:また、HTTPリクエストの別のテストサービス(https://postman-echo.com)を試しました。いずれかのQtに問題がないのに、私の驚きのために
$~: curl --request GET --url "https://postman-echo.com/get?foo1=bar1&foo2=bar2"
:curl
で問題はありません!大きな違いとして私がここで見る唯一の事は、postman-echo.com
がHTTPSを使用しているのに対し、私が試した他のURLはHTTPだということです。 Qtの例のデフォルトURLであるhttps://www.qt.io
を除外し、うまくいきました(パラメータはありませんでしたが)。
問題を理解するために、コードを表示する必要があります。 – vahancho
@vahancho私はQt wikiと全く同じコードを使用しています。 1行に変更はありません。 – rbaleksandar
問題の根本原因を調べるには、次の質問に答える必要があります。1)アプリケーションが適切な要求を送信していますか?2)アプリケーションがサーバーから応答を受け取りますか? 3)アプリケーションはサーバーからの応答を適切に処理しますか? – vahancho