這是this問題的後續處理。起初,我認爲在檢查出example from the Qt wiki(我使用相同的代碼而沒有任何更改)後問題得到了解決。然而,它似乎是導致罪魁禍首的URL。我嘗試使用this答案中提供的鏈接來測試我的http GET請求。使用HTTP請求方(火狐插件HTTP請求(GET,POST等))和curl
顯示了此鏈接^沒有問題:如何正確使用QNetworkAccessManager和QNetworkReply執行http GET請求? URL如何影響Qt中的請求?
$~: curl --request GET --url "http://httpbin.org/ip"
出於某種原因,Qt的卡和readyRead()
/finished()
信號發射從未。
因此,由於套接字超時而導致請求在一段時間後被取消......對於那些非常小且由Firefox在不到一秒鐘內打開的東西。
當談到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時會出現一些問題,或者我錯過了某些東西。
編輯2:我也嘗試了另一個HTTP請求測試服務 - https://postman-echo.com。有curl
沒有問題:
$~: curl --request GET --url "https://postman-echo.com/get?foo1=bar1&foo2=bar2"
令我驚訝的是,雖然Qt也沒有問題!我在這裏看到的唯一一個巨大差異是postman-echo.com
使用HTTPS,而我嘗試過的其他URL是HTTP。我排除了https://www.qt.io
這是Qt示例中的默認URL,並且工作得很好(儘管它沒有任何參數)。
您仍然需要顯示您的代碼以幫助我們理解問題。 – vahancho
@vahancho我使用Qt wiki中完全相同的代碼。沒有一條線改變。 – rbaleksandar
爲了解決問題的根本原因,您必須回答以下問題:1)我的應用程序是否發送了正確的請求?2)應用程序是否從服務器獲取響應? 3)應用程序是否正確處理從服務器獲得的響應? – vahancho