带有边界获取错误的HTTP POST

时间:2018-03-21 02:09:09

标签: c++ http post arduino

我正在尝试使用Arduino板将图像发布到我的服务器。我发布的页面是使用Ruby on Rails,我知道它的工作方式与我使用Postman测试它一样。现在,我的Arduino代码运行良好,直到我开始添加边界。请指导。我尝试了多种不同的设置。我已经删除了上传文件的代码,因为我无法获得下面的工作。

// send the header
sprintf(outBuf,"POST %s HTTP/1.1",page);
client.println(outBuf);
sprintf(outBuf,"Host: %s",domainBuffer);
client.println(outBuf);
client.println(F("Connection: close\r\nContent-Type: multipart/form-data; boundary=----AbC123"));
sprintf(outBuf,"Content-Length: %u\r\n",strlen(thisData));
client.println(outBuf);

// send the body (variables)
client.println(F("------AbC123"));
client.println(F("Content-Disposition: form-data; name=\"authenticate\""));
client.println();
client.println(F("authenticate"));
client.println(F("------AbC123--"));

以下是我从网页上获取的内容。我知道我的问题在于我的请求结构。

 2018-03-21 01:56:23 +0000: Rack app error: #<EOFError: bad content body>
/usr/local/rvm/gems/ruby-2.2.1/gems/rack-1.6.8/lib/rack/multipart/parser.rb:147:in `get_current_head_and_filename_and_content_type_and_name_and_body'
/usr/local/rvm/gems/ruby-2.2.1/gems/rack-1.6.8/lib/rack/multipart/parser.rb:58:in `block in parse'

1 个答案:

答案 0 :(得分:0)

供以后查看此问题的任何人使用。我的问题是我为身体计算的内容长度不正确。 Content-length是从开始边界到结束边界的所有内容的长度。一旦我修复了一切,一切都很好。感谢您的所有帮助。