본문 바로가기

Programming/C&CPP

C++ REST SDK(카사블랑카) wstring으로 받는 법

반응형

C++ REST SDK를 통해서 파일로 받는 방법은 아래 링크를 참조하시면 됩니다.

2015/06/25 - [Programming/C&C++] - C++ REST SDK(카사블랑카)로 웹페이지 가져오기

일반적으로 HTTP클라이언트는 파일을 생성하지 않습니다.

받은 결과를 직접 파싱해서 사용하는 것이 일반적인 방식입니다.

std::wstring으로 결과를 전달받는 전체 코드는 다음과 같습니다.

wstring으로 전달 받은 이후에 XML 파서(Parser) 등으로 원하는 값을 출력하면 됩니다.

#include <string> // std::wstring
#include <vector> // std::vector
#include <utility> // std::pair
#include <cpprest/http_client.h>

int main()
{
	// return wstring value
	std::wstring szBody;
	
	// vector of Query
	std::vector<std::pair<std::wstring, std::wstring>> vQuery{ { U("q"), U("Casablanca CodePlex") } };

	// make uri
	web::http::client::http_client client(U("http://www.bing.com/"));
	web::uri_builder builder(U("/search"));
	for (auto query : vQuery)
	{
		builder.append_query(query.first, query.second);
	}

	// make task(request and get result)
	auto requestTask = client.request(web::http::methods::GET, builder.to_string()).then([&](web::http::http_response response)
	{
		return response.extract_string();
	}).then([&](utility::string_t str)
	{
		szBody = str;
	});

	try
	{
		requestTask.wait();
	}
	catch (const std::exception &e)
	{
		printf("Error exception:%s\n", e.what());
	}

	return 0;
}

파일을 열지 않아도 되기 때문에 간결하게 작성되었습니다.

Query를 생성하고 task를 생성해서 요청한 이후에 결과를 wstring으로 전달받습니다.

그리고 main() 함수 내의 szBody에 전달하고 완료됩니다.

이후에는 XML 파서로 처리하면 됩니다.

반응형