We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
My code looks roughly like:
char json_string[512]; int length = mylib.sprint_json(json_string); Serial.println("Sending JSON:"); Serial.println(json_string); Serial.print("Length: "); Serial.println(length); client.beginRequest(); client.post("/"); client.sendHeader("Host", "my.hostname.tld"); client.sendHeader("Content-Type", "application/json"); client.sendHeader("Content-Length", length); client.beginBody(); client.print(json_string); client.endRequest(); int statusCode = client.responseStatusCode(); String response = client.responseBody();
mylib.sprint_json is essentially an sprintf() wrapper.
mylib.sprint_json
sprintf()
This doesn't work. The request never goes out.
If I change the post request to:
client.post("/", "application/json", json_string);
it works just fine.
Am I doing something wrong? I copied the example. From the Serial.println()s, I can see that the string and length are correct...
Serial.println()
The text was updated successfully, but these errors were encountered:
Did some testing and it seems complex POST requests only work with json strings shorter than 504 characters.
Sorry, something went wrong.
I solved it like this for now:
String input = "suuuuuuuper-loooooooooooooooong-striiiiiiiiiiiing"; const size_t contentLength = input.length(); client.beginRequest(); client.post(path); client.sendHeader("Content-Type", "application/json"); client.sendHeader("Content-Length", contentLength); client.beginBody(); constexpr size_t chunkSize = 64; for (size_t i = 0; i < contentLength; i = i + chunkSize) { if (contentLength - i < chunkSize) { String chunk = input.substring(i); client.print(chunk); } else { String chunk = input.substring(i, chunkSize + i); client.print(chunk); } } client.endRequest();
No branches or pull requests
My code looks roughly like:
mylib.sprint_json
is essentially ansprintf()
wrapper.This doesn't work. The request never goes out.
If I change the post request to:
it works just fine.
Am I doing something wrong? I copied the example. From the
Serial.println()
s, I can see that the string and length are correct...The text was updated successfully, but these errors were encountered: