후속 조치 : this입니다. 처음에는 example from the Qt wiki을 확인한 후에 문제가 해결 된 것으로 생각했습니다 (동일한 코드를 변경하지 않고 사용). 그러나 범인 인 URL 인 것으로 보입니다. 내 http GET 요청을 테스트하기 위해 this 대답에 제공된 링크를 사용하여 시도했습니다. Qt는이 걸리면 어떤 이유QNetworkAccessManager 및 QNetworkReply를 사용하여 http GET 요청을 올바르게 수행하는 방법은 무엇입니까? URL이 Qt의 요청에 어떻게 영향을 줍니까?
$~: curl --request GET --url "http://httpbin.org/ip"
과 readyRead()
/finished()
신호가 방출되지 않습니다 :는 HTTP 요청자 사용 (GET (HTTP 요청을 파이어 폭스 애드온을, POST 등)) 및 curl
이 링크^어떠한 문제를 보여줍니다 .
결과적으로 소켓 시간 제한으로 인해 시간이 지나면 요청이 취소됩니다 ... 실제로는 작고 Firefox에서는 1 초 이내에 열 수 없습니다.
나는 Http에 관해서는 전문가가 아니다. 이 문제가 Qt에서 발생하는 이유는 알고 싶습니다. 반면 다른 도구로 작업 할 때는 아무런 징조가 없습니다.
편집 : 나는 또한 파이썬과의 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 위키에서 똑같은 코드를 사용한다. 단 한 줄도 바뀌지 않았습니다. – rbaleksandar
문제의 근본 원인을 찾으려면 다음 질문에 답해야합니다. 1) 내 애플리케이션이 적절한 요청을 보내나요?, 2) 애플리케이션이 서버로부터 응답을 받습니까? 3) 응용 프로그램이 서버에서 가져온 응답을 제대로 처리합니까? – vahancho