QtSoap 개발 웹 서비스 클 라 이언 트 프로그램
http://www.filestube.com/q/qtsoap+download,
제 가 사용 하 는 것 은: qtsoap - 2.6 - opensource (설치 할 필요 없 이 특정한 디 렉 터 리 에 직접 압축 을 풀 면 됩 니 다) 입 니 다.
QtSoap 을 사용 해 본 적 이 없다 면 디 렉 터 리 'examples' 에 easter, google, population 세 가지 예 가 있 습 니 다.
Note to Qt Visual Studio Integration users: In the instructions below, instead of building from command line with nmake, you can use the menu command 'Qt->Open Solution from .pro file' on the .pro files in the example and plugin directories, and then build from within Visual Studio.
VS + Qt 개발 방식 을 사용 했다 면 메뉴 의 'Qt → Open Qt Project File (. pro)' 을 사용 하여 위 프로젝트 파일 을 엽 니 다.
저 는 VS 2010 을 사 용 했 습 니 다. 상기 방법 을 사 용 했 을 때 정상적으로 불 러 올 수 없 었 습 니 다. 그래서 저 는 먼저 VS 2005 로 열 었 습 니 다. VS 2005 에서 상기 항목 을 저장 한 다음 에 VS 2010 에서 다시 열 었 습 니 다. 물론 VS 2010 에서 다시 열 었 을 때 형식 전환 이 필요 하 다 고 알려 주 었 습 니 다. 성공 한 후에 Demo 를 컴 파일 하여 실행 할 수 있 습 니 다.
저 는 먼저 다시 썼 습 니 다: population, 주로 QtSoap 및 개발 설정 을 익히 기 위해 서 입 니 다.
1. 헤더 파일 (xxx. h) 에서 변 수 를 정의 합 니 다 (XXX 는 클래스 이름 입 니 다. 다시 정의 하 십시오).
#include
class QTextEdit;
private slots: void
getResponse();
private:
QTextEdit
*m_pWeatherEdt;
private: QtSoapHttpTransport http;
2 클래스 의 구조 함수 에서:
m_pWeatherEdt =
new QTextEdit(
this);
connect(&http, SIGNAL(responseReady()), SLOT(getResponse()));
3 요청 발송:
void XXX::
submitRequest()
{
http.
setHost(" www.abundanttech.com");
QtSoapMessage
request;
http.
setAction (" http://www.abundanttech.com/WebServices/Population/getPopulation");
request.
setMethod("getPopulation", " http://www.abundanttech.com/WebServices/Population");
request.
addMethodArgument
("strCountry",
"",
"china");
http.
submitRequest(request,
"/WebServices/Population/population.asmx");
}
이상 매개 변 수 를 보십시오:http://www.abundanttech.com/WebServices/Population/population.asmx
다음 과 같다.
SOAP
The following is a sample SOAP request and response. The placeholders shown need to be replaced with actual values.
POST /WebServices/Population/population.asmx HTTP/1.1
Host: www.abundanttech.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://www.abundanttech.com/WebServices/Population/getPopulation"
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<getPopulation xmlns="http://www.abundanttech.com/WebServices/Population">
<strCountry>string</strCountry>
</getPopulation>
</soap:Body>
</soap:Envelope>
물론, 당신 도 "중국 기상 국" 의 웹 서 비 스 를 사용 하여 테스트 예 시 를 할 수 있 습 니 다.
void XXX::submitRequest() {
http.setHost("www.ayandy.com"); QtSoapMessage request;
http.setAction("http://tempuri.org/getSupportProvince
"); request.setMethod("getSupportProvince", "http://tempuri.org/
"); http.submitRequest(request, "/Service.asmx");
}
이상 매개 변 수 를 보십시오:http://www.ayandy.com/Service.asmx다음 과 같다.
SOAP 1.1
다음은 SOAP 1.2 요청 과 응답 예제 입 니 다. 표시 되 는 대체 자 는 실제 값 으로 바 꿔 야 합 니 다.
POST /Service.asmx HTTP/1.1
Host: www.ayandy.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://tempuri.org/getSupportProvince"
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<getSupportProvince xmlns="http://tempuri.org/" />
</soap:Body>
</soap:Envelope>
4 회복 해석:
void XXX::getResponse() {
// Get a reference to the response message.
const QtSoapMessage &message = http.getResponse();
// Check if the response is a SOAP Fault message if (message.isFault()) { m_pWeatherEdt->append(message.faultString().value().toString().toLatin1().constData()); } else { // Get the return value, and print the result. const QtSoapType &response = message.returnValue(); m_pWeatherEdt->append(response["Country"].value().toString().toLatin1().constData()); m_pWeatherEdt->append(response["Pop"].value().toString().toLatin1().constData()); m_pWeatherEdt->append(response["Date"].value().toString().toLatin1().constData());
} }
이상 의 방법 은 고정된 유형의 소식 만 해석 할 수 있 습 니 다. 다음은 일반적인 방법 을 소개 합 니 다.
void XXX::getResponse() {
// Get a reference to the response message. const QtSoapMessage &message = http.getResponse();
// Check if the response is a SOAP Fault message if (message.isFault()) { m_pWeatherEdt->append(message.faultString().value().toString().toLatin1().constData()); } else { const QtSoapType &root = message.returnValue(); QtSoapStruct myStruct((QtSoapStruct&)root);
//되 돌아 오 는 구조 체 를
QtSoapStruct for (int i = 0; i < myStruct.count(); i++) { m_pWeatherEdt->append(myStruct[i].typeName() + " : " + myStruct[i].toString()); }
} }
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.