我从非浏览器设备(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标题中需要一些额外的东西,因为作为一个非浏览器设备,我可能没有一些自动配置用于通信,我认为这有,浏览器。有什么想法吗?
答案 0 :(得分:1)
您需要在请求中添加Content-Length标头。