我正在从非浏览器设备(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 标头中添加一些额外的内容,因为作为非浏览器设备,我可能没有像浏览器那样自动配置通信。有什么想法吗?