Я новичок в CPPRest и пытаюсь выяснить, может ли CPPRest читать схемы с типом содержимого coreapi + json.(Content-Type: application / vnd.coreapi + json; charset = utf-8).
Я пытаюсь получить доступ к "http://notes.coreapi.org" и получить данные. Аналогично пакету python coreapi (http://www.coreapi.org/)) и хотел бы знать, поддерживает ли это cpprest, и если да, то какойметоды, которые я могу использовать для извлечения информации. Моя конечная цель - понять данные схемы и использовать их подобно пакету coreapi.
Я думал, что CPPRest сделал это как часть своих функций, но, возможно, я мог ошибаться.Я гуглил по ней, но не смог найти нужную информацию, поэтому разместил ее здесь.
До сих пор я отправлял клиентский запрос на http://notes.coreapi.org и пытался получить данные в формате, который мой код можетпонять. Вот мой код.
#include <iostream>
//for string to wstring conversion
#include <locale>
#include <codecvt>
#include <string>
#include "myheader.h"
#include "cpprest/base_uri.h"
#include "cpprest/http_client.h"
using namespace web;
using namespace http;
using namespace http::client;
int main()
{
utility::string_t port = U("80");
utility::string_t address = U("http://notes.coreapi.org:");
address.append(port);
http::uri uri = http::uri(address);
http_client client1(http::uri_builder(uri).to_uri());
pplx::task<http_response> client1_response = client1.request(methods::GET);
client1_response.wait();
if (client1_response.is_done())
{
std::wcout << client1_response.get().to_string();
/*
output:
HTTP/1.1 200 OK
Allow: GET, POST, OPTIONS
Connection: keep-alive
Content-Type: application/vnd.coreapi+json; charset=utf-8
Date: Tue, 23 Oct 2018 14:36:36 GMT
Server: gunicorn/19.3.0
Transfer-Encoding: chunked
Vary: Accept
Via: 1.1 vegur
*/
auto stringtask = client1_response.get().extract_string();
if (stringtask.is_done())
{
ucout << " info: stringtask" << std::endl << stringtask.get();
}
auto string1task = client1_response.get().extract_utf16string();
if (string1task.is_done())
{
ucout << " info: string1task" << std::endl << string1task.get();
}
auto extract_utf8string = client1_response.get().extract_utf8string();
if (extract_utf8string.is_done())
{
std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> converter;
std::wstring wide = converter.from_bytes(extract_utf8string.get());
ucout << " info: extract_utf8string" << std::endl << wide.c_str();
}
auto jsontask = client1_response.get().extract_json();
if (jsontask.is_done())
{
ucout << " info: jsontask" << std::endl << jsontask.get();
}
}
}