CPPRESTSDK Kompression/Dekompression gzip/deflate
-
Hallo.
a) Ich habe die Frage auch auf StackOverflow gestellt, aber warte da schon ne Weile auf eine Antwort -.-
link_zu_stackoverflow
b) Ich bin mir nicht sicher hier im richtigen Forenbereich zu sein... Da die Anwendung aber MFC nutzt und kein klassisches Webzeug ist, habe ich mich für diesen Bereich entschieden.Zur Frage:
Ich versuche einen Rest-Endpunkt auf meinem Server anzusprechen. Die Antwort kann vom Server komprimiert werden, wenn es der Client fordert. Bei Versuchen mit Postman und ähnlichen Tools hat sich gezeigt, dass die Antwort komprimiert wird.
Sobald ich aber versuche die Kompression/Dekompression beim CPPRestSDK zu nutzen, bekomme ich nur Fehlermeldungen.
Den Client erstellen
static http_client_config config; config.set_validate_certificates(false); config.set_request_compressed_response(true); static http_client client(uri, config); pClient = &client;
Header zusammen bauen
request.set_method(method); request.set_request_uri(uri::encode_uri(string_t(sUri))); request.headers().add(string_t(AUTHENTICATION_HEADER_KEY), string_t(m_sAuthenticationID)); request.headers().add(U("Accept-Encoding"), U("gzip, deflate"));
Die Abfrage feuern und auswerten
pplx::task<http_response> task = pClient->request(*pRequest); try { task.then([&](http_response response) { unsigned short statuscode = response.status_code(); if (statuscode >= 200 && statuscode < 300) { try { if (pJsonResult) *pJsonResult = response.extract_json().get(); ...
Der Header der Antwort --> gzip wurde verwendet
Header=Content-Encoding:gzip Header=Content-Length:63 Header=Content-Type:application/json Header=Date:Tue, 27 Feb 2018 09:36:12 GMT Header=Server:XXX Header=Set-Cookie:JSESSIONID=XXXXX; Path=/XXX/XXX; HttpOnly Header=Vary:Accept-Encoding Header=X-Frame-Options:SAMEORIGIN
Laut Microsoft kann das SDK seit 2.10 gzip/deflate und erkennt es automatisch.
Wenn ich die Antwort als "string" abhole, kommt etwas sehr kryptisches bei raus, was aber von der Länge (Content-Length) passen würde. Ich habe aber keine Ahnung, was ich mit dem String machen sollte um ihn in mein erwartes json zu transformieren...
Ich hoffe ihr habt eine Anregung für mich.
Grüße
Bara