How to build a valid HTTP Response. Recv failure: Connection reset by peer












1















I'm developing an Arduino server that should respond with a message when it receives a POST Request.



If I test my project with a HTTP Client (like insomnia or postman), I get an error:



Error: Failure when receiving data from the peer


I still get a response that I can read but with a final error.



That's my client request:



> POST /SOMETHING/ HTTP/1.1
> Host: [ARDUINO IP]
> User-Agent: insomnia/6.2.0
> Accept: */*
> Content-Length: 0


And this is my Arduino response considered as not valid:



< HTTP/1.1 200 OK
< Connection: close
< [MY MESSAGE]

* Recv failure: Connection reset by peer
* stopped the pause stream!
* Closing connection 2


As you can notice, I just added 2 strings



HTTP/1.1 200 OK
Connection: close


before the real message.



Am I missing something to create a valid response?



Thanks










share|improve this question













migrated from stackoverflow.com Nov 15 '18 at 13:54


This question came from our site for professional and enthusiast programmers.




















    1















    I'm developing an Arduino server that should respond with a message when it receives a POST Request.



    If I test my project with a HTTP Client (like insomnia or postman), I get an error:



    Error: Failure when receiving data from the peer


    I still get a response that I can read but with a final error.



    That's my client request:



    > POST /SOMETHING/ HTTP/1.1
    > Host: [ARDUINO IP]
    > User-Agent: insomnia/6.2.0
    > Accept: */*
    > Content-Length: 0


    And this is my Arduino response considered as not valid:



    < HTTP/1.1 200 OK
    < Connection: close
    < [MY MESSAGE]

    * Recv failure: Connection reset by peer
    * stopped the pause stream!
    * Closing connection 2


    As you can notice, I just added 2 strings



    HTTP/1.1 200 OK
    Connection: close


    before the real message.



    Am I missing something to create a valid response?



    Thanks










    share|improve this question













    migrated from stackoverflow.com Nov 15 '18 at 13:54


    This question came from our site for professional and enthusiast programmers.


















      1












      1








      1


      1






      I'm developing an Arduino server that should respond with a message when it receives a POST Request.



      If I test my project with a HTTP Client (like insomnia or postman), I get an error:



      Error: Failure when receiving data from the peer


      I still get a response that I can read but with a final error.



      That's my client request:



      > POST /SOMETHING/ HTTP/1.1
      > Host: [ARDUINO IP]
      > User-Agent: insomnia/6.2.0
      > Accept: */*
      > Content-Length: 0


      And this is my Arduino response considered as not valid:



      < HTTP/1.1 200 OK
      < Connection: close
      < [MY MESSAGE]

      * Recv failure: Connection reset by peer
      * stopped the pause stream!
      * Closing connection 2


      As you can notice, I just added 2 strings



      HTTP/1.1 200 OK
      Connection: close


      before the real message.



      Am I missing something to create a valid response?



      Thanks










      share|improve this question














      I'm developing an Arduino server that should respond with a message when it receives a POST Request.



      If I test my project with a HTTP Client (like insomnia or postman), I get an error:



      Error: Failure when receiving data from the peer


      I still get a response that I can read but with a final error.



      That's my client request:



      > POST /SOMETHING/ HTTP/1.1
      > Host: [ARDUINO IP]
      > User-Agent: insomnia/6.2.0
      > Accept: */*
      > Content-Length: 0


      And this is my Arduino response considered as not valid:



      < HTTP/1.1 200 OK
      < Connection: close
      < [MY MESSAGE]

      * Recv failure: Connection reset by peer
      * stopped the pause stream!
      * Closing connection 2


      As you can notice, I just added 2 strings



      HTTP/1.1 200 OK
      Connection: close


      before the real message.



      Am I missing something to create a valid response?



      Thanks







      http esp8266






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 13 '18 at 20:06









      GiuMexGiuMex

      112




      112




      migrated from stackoverflow.com Nov 15 '18 at 13:54


      This question came from our site for professional and enthusiast programmers.






      migrated from stackoverflow.com Nov 15 '18 at 13:54


      This question came from our site for professional and enthusiast programmers.
























          1 Answer
          1






          active

          oldest

          votes


















          1














          HTTP requires an empty line after HTTP headers.



          First line is status line. Then the header lines. The headers are terminated by an empty line. Then the response body follows. Line terminator for HTTP is rn. Arduino println() function uses rn.



          The response with body should contain Content-type and Content-length header. Alternative to Content-lenght is "chunked" Transfer-Encoding.



          ESP8266WebServer library handles HTTP for you.






          share|improve this answer
























          • Thanks, it works. I just don't know why it still doesn't work in insomnia or postman even if it works if I read the request from a browser. Insomnia keeps saying: < HTTP/1.1 200 OK < Content-Type: text/html < Connection: close * Received 9 B chunk * Recv failure: Connection reset by peer * stopped the pause stream! ... looks like it receives the response but there's still the "recv failure" error.

            – GiuMex
            Nov 14 '18 at 11:40











          • you don't send content length, so the client doesn't know where the body ends. it waits for more data and you close the connection. browser tolerates it or has some orientation in the body structure (html tags?)

            – Juraj
            Nov 14 '18 at 12:05











          • perferct. It works printing always the string.length() in Content-Length. Thanks

            – GiuMex
            Nov 15 '18 at 14:26











          Your Answer






          StackExchange.ifUsing("editor", function () {
          return StackExchange.using("schematics", function () {
          StackExchange.schematics.init();
          });
          }, "cicuitlab");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "540"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: false,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2farduino.stackexchange.com%2fquestions%2f57877%2fhow-to-build-a-valid-http-response-recv-failure-connection-reset-by-peer%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          1














          HTTP requires an empty line after HTTP headers.



          First line is status line. Then the header lines. The headers are terminated by an empty line. Then the response body follows. Line terminator for HTTP is rn. Arduino println() function uses rn.



          The response with body should contain Content-type and Content-length header. Alternative to Content-lenght is "chunked" Transfer-Encoding.



          ESP8266WebServer library handles HTTP for you.






          share|improve this answer
























          • Thanks, it works. I just don't know why it still doesn't work in insomnia or postman even if it works if I read the request from a browser. Insomnia keeps saying: < HTTP/1.1 200 OK < Content-Type: text/html < Connection: close * Received 9 B chunk * Recv failure: Connection reset by peer * stopped the pause stream! ... looks like it receives the response but there's still the "recv failure" error.

            – GiuMex
            Nov 14 '18 at 11:40











          • you don't send content length, so the client doesn't know where the body ends. it waits for more data and you close the connection. browser tolerates it or has some orientation in the body structure (html tags?)

            – Juraj
            Nov 14 '18 at 12:05











          • perferct. It works printing always the string.length() in Content-Length. Thanks

            – GiuMex
            Nov 15 '18 at 14:26
















          1














          HTTP requires an empty line after HTTP headers.



          First line is status line. Then the header lines. The headers are terminated by an empty line. Then the response body follows. Line terminator for HTTP is rn. Arduino println() function uses rn.



          The response with body should contain Content-type and Content-length header. Alternative to Content-lenght is "chunked" Transfer-Encoding.



          ESP8266WebServer library handles HTTP for you.






          share|improve this answer
























          • Thanks, it works. I just don't know why it still doesn't work in insomnia or postman even if it works if I read the request from a browser. Insomnia keeps saying: < HTTP/1.1 200 OK < Content-Type: text/html < Connection: close * Received 9 B chunk * Recv failure: Connection reset by peer * stopped the pause stream! ... looks like it receives the response but there's still the "recv failure" error.

            – GiuMex
            Nov 14 '18 at 11:40











          • you don't send content length, so the client doesn't know where the body ends. it waits for more data and you close the connection. browser tolerates it or has some orientation in the body structure (html tags?)

            – Juraj
            Nov 14 '18 at 12:05











          • perferct. It works printing always the string.length() in Content-Length. Thanks

            – GiuMex
            Nov 15 '18 at 14:26














          1












          1








          1







          HTTP requires an empty line after HTTP headers.



          First line is status line. Then the header lines. The headers are terminated by an empty line. Then the response body follows. Line terminator for HTTP is rn. Arduino println() function uses rn.



          The response with body should contain Content-type and Content-length header. Alternative to Content-lenght is "chunked" Transfer-Encoding.



          ESP8266WebServer library handles HTTP for you.






          share|improve this answer













          HTTP requires an empty line after HTTP headers.



          First line is status line. Then the header lines. The headers are terminated by an empty line. Then the response body follows. Line terminator for HTTP is rn. Arduino println() function uses rn.



          The response with body should contain Content-type and Content-length header. Alternative to Content-lenght is "chunked" Transfer-Encoding.



          ESP8266WebServer library handles HTTP for you.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 13 '18 at 20:08









          JurajJuraj

          7,2002927




          7,2002927













          • Thanks, it works. I just don't know why it still doesn't work in insomnia or postman even if it works if I read the request from a browser. Insomnia keeps saying: < HTTP/1.1 200 OK < Content-Type: text/html < Connection: close * Received 9 B chunk * Recv failure: Connection reset by peer * stopped the pause stream! ... looks like it receives the response but there's still the "recv failure" error.

            – GiuMex
            Nov 14 '18 at 11:40











          • you don't send content length, so the client doesn't know where the body ends. it waits for more data and you close the connection. browser tolerates it or has some orientation in the body structure (html tags?)

            – Juraj
            Nov 14 '18 at 12:05











          • perferct. It works printing always the string.length() in Content-Length. Thanks

            – GiuMex
            Nov 15 '18 at 14:26



















          • Thanks, it works. I just don't know why it still doesn't work in insomnia or postman even if it works if I read the request from a browser. Insomnia keeps saying: < HTTP/1.1 200 OK < Content-Type: text/html < Connection: close * Received 9 B chunk * Recv failure: Connection reset by peer * stopped the pause stream! ... looks like it receives the response but there's still the "recv failure" error.

            – GiuMex
            Nov 14 '18 at 11:40











          • you don't send content length, so the client doesn't know where the body ends. it waits for more data and you close the connection. browser tolerates it or has some orientation in the body structure (html tags?)

            – Juraj
            Nov 14 '18 at 12:05











          • perferct. It works printing always the string.length() in Content-Length. Thanks

            – GiuMex
            Nov 15 '18 at 14:26

















          Thanks, it works. I just don't know why it still doesn't work in insomnia or postman even if it works if I read the request from a browser. Insomnia keeps saying: < HTTP/1.1 200 OK < Content-Type: text/html < Connection: close * Received 9 B chunk * Recv failure: Connection reset by peer * stopped the pause stream! ... looks like it receives the response but there's still the "recv failure" error.

          – GiuMex
          Nov 14 '18 at 11:40





          Thanks, it works. I just don't know why it still doesn't work in insomnia or postman even if it works if I read the request from a browser. Insomnia keeps saying: < HTTP/1.1 200 OK < Content-Type: text/html < Connection: close * Received 9 B chunk * Recv failure: Connection reset by peer * stopped the pause stream! ... looks like it receives the response but there's still the "recv failure" error.

          – GiuMex
          Nov 14 '18 at 11:40













          you don't send content length, so the client doesn't know where the body ends. it waits for more data and you close the connection. browser tolerates it or has some orientation in the body structure (html tags?)

          – Juraj
          Nov 14 '18 at 12:05





          you don't send content length, so the client doesn't know where the body ends. it waits for more data and you close the connection. browser tolerates it or has some orientation in the body structure (html tags?)

          – Juraj
          Nov 14 '18 at 12:05













          perferct. It works printing always the string.length() in Content-Length. Thanks

          – GiuMex
          Nov 15 '18 at 14:26





          perferct. It works printing always the string.length() in Content-Length. Thanks

          – GiuMex
          Nov 15 '18 at 14:26


















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Arduino Stack Exchange!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2farduino.stackexchange.com%2fquestions%2f57877%2fhow-to-build-a-valid-http-response-recv-failure-connection-reset-by-peer%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Bressuire

          Vorschmack

          Quarantine