В Windows 10, 1803 можно вызывать WinRT из стандартного, соответствующего C ++. Расширения языка C ++ / CX больше не требуются.
Я уже знаю, как отправить запрос на сервер, используя класс HttpRequestMessage:
#pragma comment(lib, "windowsapp")
#include "pch.h"
#include "winrt/Windows.Web.Http.Filters.h"
#include "winrt/Windows.Web.Http.Headers.h"
#include <winrt/Windows.Foundation.h>
#include <winrt/Windows.Foundation.Collections.h>
#include <string_view>
using namespace winrt;
using namespace Windows::Foundation;
using namespace Windows::Web::Http;
using namespace Windows::Web::Http::Filters;
using namespace Windows::Web::Http::Headers;
using namespace Windows::Foundation::Collections;
using namespace std::literals;
using namespace std;
IAsyncAction HttpClientExample(Uri uri)
{
HttpBaseProtocolFilter filter;
HttpClient httpClient(filter);
HttpRequestMessage loginRequest(HttpMethod::Post(), uri);
try
{
auto response{ co_await httpClient.SendRequestAsync(loginRequest) };
HttpCookieCollection cookieCollection = filter.CookieManager().GetCookies(uri);
wcout << cookieCollection.Size() << L" cookies found." << endl;
for (HttpCookie cookie : cookieCollection) {
wcout << L"Name: " << cookie.Name().c_str() << endl;
wcout << L"Domain: " << cookie.Domain().c_str() << endl;
wcout << L"Path: " << cookie.Path().c_str() << endl;
wcout << L"Value: " << cookie.Value().c_str() << endl;
}
}
catch (winrt::hresult_error const& ex)
{
// Details in ex.message() and ex.to_abi().
}
}
int main() {
init_apartment();
Uri uri{ L"http://www.google.com/"sv };
HttpClientExample(uri);
Sleep(10000);
}
Как установить настраиваемый заголовок с помощью HttpFormUrlEncodedContent и как настроить настраиваемое содержимое в теле POST?
Спасибо за вашу помощь!