0

我正在从非浏览器设备(POS,销售点)发出 http 发布请求,该请求是用 C 编程的。

完美地执行 http GET 请求,我收到了来自服务器的答案。我只是与主机连接,构建味精,例如:

strcpy(msjEnv, "GET /app/appinfo/ HTTP/1.1\r\n"
               "Host: 185.12.25.138\n"
               "User-Agent: 3C377521\n"
               "\n"
               "\0");    

正如我所说,我发送msjEnv, 以从服务器获取我需要的答案(JSON)。

现在,通过 http POST 请求,服务器以某种方式不会收到构建消息的正文,例如:

strcpy(msjEnv, "POST /services/s/Core/login HTTP/1.1\r\n"
               "Host: 185.12.25.138:7004\r\n"
               "auth: asdasd\r\n"
               "Content-Type: application/x-www-form-urlencoded\r\n"
               "\r\n"
               "disp=101010&usr=987676&pass=123456&app=POS\0");

当我看到服务器的控制台(跟踪)时,我可以看到 POS 与服务器连接,但 msg ( disp=101010&usr=896464&pass=9514&app=WPOS) 的 BODY 全部为空。

我已经用 Postman 进行了测试(一个优秀的应用程序来自 chrome 应用程序商店来测试 API),我收到了正确的响应。

我想我需要在 POST 标头中添加一些额外的内容,因为作为非浏览器设备,我可能没有像浏览器那样自动配置通信。有什么想法吗?

4

1 回答 1

1

您需要将 Content-Length 标头添加到您的请求中。

于 2015-12-29T16:00:57.433 回答