Как использовать C ++ / WinRT HttpRequestMessage с настраиваемым телом POST и HttpFormUrlEncodedContent (приложение UWP) - PullRequest
0 голосов
/ 01 июля 2018

В 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?

Спасибо за вашу помощь!

...