Dies ist der Code, wie ich die Antwort von meiner HTTPS-Anfrage lese:
int len = 0;
f = fopen("response.txt", "wb");
do
{
char buff[1534];
len = BIO_read(bio, buff, sizeof(buff));
if (len > 0) {
fwrite(buff, sizeof(char), len, f);
}
} while (len > 0 || BIO_should_retry(bio));
fclose(f);
Die Antwort sollte ein "minimiertes" JSON sein (keine neuen Zeilen), aber aus irgendeinem Grund sehe ich einige "zufällig" eingefügte \r\n, wenn ich mir die Antwort mit einem HEX-Editor ansehe:
Bild
33 35 2C 2D 31 31 35 0D 0A 31 30 30 30 0D 0A
Dies ist ein Auszug aus einem JSON-Array, also sollte statt \r\n nur ein , stehen.
Auch der HTTP-Antworttext enthält einige seltsame Zeichen vor dem eigentlichen JSON:
Bild
HTTP/1.1 201 Created
Server: nginx/1.21.3
Date: Wed, 04 May 2022 11:22:22 GMT
Content-Type: application/json; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Location: http://myserver.de/my/endpoint
api-supported-versions: 1.0
1f1b
Zwischen einem JSON-Array (mit nur Zahlen) befinden sich drei Zeichen, die nicht vorhanden sein sollten:
Bild
Ead
Und nach dem JSON gibt es eine zusätzliche 0, die nicht da sein sollte:
Bild
0.
Der einzige Grund, an den ich denken kann, ist eine Verletzung der Speicherbeschränkung.
Das zurückgegebene JSON ist abgesehen von den erwähnten Fehlern korrekt und das Backend hat keine Probleme mit der Anfrage, daher gehe ich davon aus, dass es korrekt ist.
Irgendwelche Ideen, wie ich das beheben kann?