I am HTTP posting a data to this web API https://morning-cliffs-85779.herokuapp.com/api/users from an Arduino connected to esp8226. I am using the wifiesp library to HTTP_POST data.

The REST APIs are hosted in Heroku.

When I post it the Arduino gives the response

Connected to server
[WiFiEsp] Data packet send error (2)
[WiFiEsp] Failed to write to socket 3
[WiFiEsp] Disconnecting 3

and the Heroku server gives the response

at=error code=H13 desc="Connection closed without response"

Below is the Arduino code:

  if (client.connect(server, 80)) {
    Serial.println("Connected to server");
    // Make a HTTP request
    String content = "id=5bc58842bdfea0153bb27214&volt=7";
    client.println("POST /api/users HTTP/1.1");
    client.println("Host: morning-cliffs-85779.herokuapp.com:80");// ("Host": host:port)
    client.println("Accept: */*");
    client.println("Content-Length: " + content.length());
    client.println("Content-Type: application/x-www-form-urlencoded");

This is the Node Express API:

app.post('/api/users', function (req, res) {


if (req.body.id) {
    DevReading.findByIdAndUpdate(req.body.id, {
        volt: req.body.volt
    }, function (err, reading) {
        if (err) throw err;

        res.send('Update Success');

else {

var newDevReading = DevReading ({
    deviceName: 'test',
    volt: req.body.volt

newDevReading.save(function (err) {
    if (err) throw err;
    res.send('Reading Post Success');

  • you must use SSL to connect with https
    – Juraj
    Oct 16, 2018 at 10:31
  • how can i do it? Oct 16, 2018 at 10:39
  • see WebClientSSL example
    – Juraj
    Oct 16, 2018 at 11:08
  • 1
    The Host header shouldn't contain the port. Change Host: morning-cliffs-85779.herokuapp.com:80" to Host: morning-cliffs-85779.herokuapp.com"
    – Gerben
    Oct 16, 2018 at 12:06

1 Answer 1


Did it heres the code

`if (client.connectSSL(server, 443)) {
Serial.println("Connected to server");
// Make a HTTP request
String PostData = content + volt;
client.println("POST /api/users HTTP/1.1");
client.println("Host: morning-cliffs-85779.herokuapp.com");
client.println("Cache-Control: no-cache");
client.println("Content-Type: application/x-www-form-urlencoded");
client.print("Content-Length: ");

Hope it helps some one


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.