2014-10-24 7 views
3

브라우저를 시작하고 사용자의 입력에 따라 URL으로 보내는 간단한 응용 프로그램을 작성하려고합니다.Qt QDesktopServices :: openUrl - 게시 값을 사용하여 브라우저 시작

QDesktopServices::openUrl(QUrl(url)); 

그러나, 나는 그들이 POST를 사용하여 제출할 어떤 URL과 함께 변수를 전달하고 싶습니다. GET의 경우 URL 문자열에 값을 간단히 포함 시키면되지만, 어떻게하면 POST 개의 변수를 추가 할 수 있습니까?

감사합니다.

답변

1

:

부울 QDesktopServices ::의 OpenURL (const를 QUrl & URL이) [정적]

는 사용자의 데스크톱 환경에 적합한 웹 브라우저에서 지정된 URL을 엽니, true를 돌려줍니다 성공하면; 그렇지 않으면 false를 반환합니다.

URL이 로컬 파일 (예 : URL 스키마가 '파일')에 대한 참조 인 경우 웹 브라우저 대신 적합한 응용 프로그램으로 열립니다.

간단히 대답하면 네트워크 관리자가 아니기 때문입니다. 이를 위해 이미 QNetworkAccessManager을 사용할 수 있습니다. URL을 여는 지원을 추가하는 것이 편리한 방법이었습니다. 그렇지 않으면 상당한 작업이 필요했습니다. QtNetwork을 더 자세히 복제 할 계획은 없습니다.

따라서, 나는 당신의 URL을 제공 포스트 방법과 작업을 달성하기 위해이 같은 것을 사용하는 것이 좋습니다 것입니다 :

QUrlQuery urlQuery; 
urlQuery.addQueryItem("param1", "value1"); 
urlQuery.addQueryItem("param2", "value2"); 
QUrl url = QUrl("http://foo.com"); 
QNetworkRequest networkRequest(url); 
networkRequest.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded"); 
networkManager->post(networkRequest, urlQuery.toString(QUrl::FullyEncoded).toUtf8()); 
+0

문제를이 솔루션으로 지금까지의 내가 그것이 서버에 단지 요청의 이해한다. 사용자가 제공 한 자격 증명을 사용하여 자동으로 사용자의 영역에 로그인하고 브라우저를 열어주는 브라우저를 열어야합니다. 응용 프로그램에 대한 응답 만 얻는 것이 아닙니다. 기본적으로 실행기입니다. 프로세스로 브라우저를 열고 그런 변수를 제공 할 방법이 없습니까? 브라우저는 POST 변수를 명령 줄 인수로 받아 들일 수 있습니까? –

+0

@WilliamNorthern : 게시물은 절대로 발사대가 아닙니다. 왜 그렇게 생각하니? 또한 왜 다른 답변을 수락 했습니까? 그 답이 충분하지 않은 경우 그 껄끄 러운 세부 정보없이 동일한 내용을 씁니다. – lpapp

3

QDesktopServices는이 용도로 설계되지 않았으므로 QNetworkAccessManager::post을 사용하여 HTTP POST를하는 것이 좋습니다.

그러면 필요하면 HTTP 응답에서 일부 정보를 취하여 데스크탑 브라우저를 열 수 있습니다. official documentation에서